blob: 1d661d0d70bf36fdee9b8fd90d2ad397ec638a77 [file] [log] [blame]
2006-12-31 Richard Guenther <>
PR middle-end/30137
* fold-const.c (fold_comparison): Fold comparison of addresses
of components.
2006-12-31 Roger Sayle <>
PR middle-end/30322
* fold-const.c (fold_binary): Fold X + ~X and ~X + X into -1 when
we don't care about trapping overflow. Only convert -A - 1 into ~A
when we don't care about trapping overflow.
2006-12-31 Richard Guenther <>
PR middle-end/30338
* fold-const.c (fold_binary): Fix type-mismatch in folding
of -1 - A to ~A.
2006-12-30 Kazu Hirata <>
* tree-inline.c: Fix a comment typo.
2006-12-30 Jan Hubicka <>
* ipa-pure-const.c (check_operand): SSA_NAME is safe.
* ipa-type-escape.c (scan_for_refs): Look into SSA_NAMEs.
2006-12-30 Jan Hubicka <>
* tree.h (DECL_CALL_CLOBBERED): Remove.
(tree_decl_common): Remove call_clobbered flag.
* tree-flow.h (struct var_ann_d): Add call_clobbered flag.
* tree-ssa-alias.c (mark_non_addressable, reset_cc_flags): Update.
* tree-flow-inline.h (is_call_clobbered, mark_call_clobbered,
clear_call_clobbered): Update.
* tree-ssa.c (verify_call_clobbering): Update.
2006-12-30 Jan Hubicka <>
* tree-ssa-alias.c (create_structure_vars): When in SSA, update operand
* tree-ssa-operands.c (build_ssa_operands): Recompute addresses_taken
2006-12-30 Jan Hubicka <>
Vladimir Yanovsky <>
* emit-rt.c (emit_copy_of_insn_after): Fix bug causing exponential
amount of copies of INSN_NOTEs list.
2006-12-29 Jan Hubicka <>
* cgraph.c (cgraph_expand_queue): Rename to...
(cgraph_new_nodes): ... this one.
(cgraph_state): New global variable.
(cgraph_add_new_function): Work in more cases.
* cgraph.h (cgraph_expand_queue): Rename to ...
(cgraph_new_nodes): ... this one.
(cgraph_state): New enum and static variable.
(cgraph_add_new_function): Update prototype.
(cgraph_process_new_functions): New.
* omp-low.c (expand_omp_parallel): Update.
* cgraphunit.c (initialize_inline_failed): Declare early.
(cgraph_process_new_functions): New function.
(cgraph_assemble_pending_functions): Use it.
(cgraph_expand_all_functions): Use it.
(cgraph_optimize): Use it; set cgraph_state.
* passes.c (execute_one_pass, execute_ipa_pass_list): Process new
2006-12-29 Kazu Hirata <>
* tree-cfg.c (last_stmt_ptr): Remove.
* tree-flow.h: Remove the prototype for last_stmt_ptr.
* config/i386/i386.h (NON_QI_REG_P): Remove.
* config/i386/ (non_q_regs_operand): Remove.
2006-12-29 Ian Lance Taylor <>
* c-common.c (c_define_builtins): New static function broken out
of c_common_nodes_and_builtins.
(c_common_nodes_and_builtins): Call c_define_builtins unless only
doing preprocessing.
2006-12-29 Jan Hubicka <>
* tree-inline.c (remap_ssa_name): New function.
(remap_decl): Update SSA datastructures for DECLs.
(copy_body_r): Deal with SSA_NAMEs; add referenced global vars.
(copy_bb): Set SSA_NAME def stmts.
(update_ssa_acorss_eh_edges): New function.
(copy_edge_for_bb): Call it; mark new vars for renaming.
(copy_phis_for_bb): New function.
(initialize_cfun): Break out from ...
(copy_cfg_body): ... here; maintain AUX map for both directions;
call SSA updating workers; do not produce copy of cfun to be copied.
(setup_one_parameter): Do propagation across SSA form.
(declare_return_variable): Work on SSA; use return_slot instead of
address of return slot of argument to avoid folding back and forth.
(expand_call_inline): Update SSA from on return values.
(optimize_inline_calls): Do sanity checking, dead blocks removal,
update SSA form.
(tree_function_verioning): Update initialize_cfun.
2006-12-29 Marcin Dalecki <>
* doc/invoke.texi: Replace no longer supported -fno-strength-reduce
with -fmerge-constants in sample code.
2006-12-28 Kazu Hirata <>
* (OBJS-common): Remove conflict.o
(conflict.o): Remove.
* basic-block.h: Remove the prototypes for conflict.c.
* conflict.c: Remove.
2006-12-27 Daniel Berlin <>
* sbitmap.c (BITMAP_DEBUGGING): New macro.
(do_popcount): Ditto.
(sbitmap_verify_popcount): New function.
(sbitmap_alloc): Set popcount to NULL, remove set of bytes
(sbitmap_alloc_with_popcount): New function.
(sbitmap_resize): Remove uses of bytes member and update
(sbitmap_realloc): Remove uses of bytes member.
(sbitmap_copy): Copy popcount.
(sbitmap_copy_n): New function.
(sbitmap_zero): Update popcount cache.
(sbitmap_ones): Ditto.
(sbitmap_a_and_b): Ditto.
(sbitmap_a_or_b): Ditto.
(sbitmap_a_xor_b): Ditto.
(sbitmap_union_of_diff_cg): Assert non-existence of popcount
(sbitmap_union_of_diff): Ditto.
(sbitmap_not): Ditto.
(sbitmap_difference): Ditto.
(sbitmap_a_and_b_cg): Ditto.
(sbitmap_a_xor_b_cg): Ditto.
(sbitmap_a_or_b_cg): Ditto.
(sbitmap_a_or_b_and_c_cg): Ditto.
(sbitmap_a_and_b_or_c_cg): Ditto.
(sbitmap_intersection_of_succs): Ditto.
(sbitmap_intersection_of_preds): Ditto.
(sbitmap_union_of_succs): Ditto.
(sbitmap_union_of_preds): Ditto.
(popcount_table): New.
(sbitmap_elt_popcount): New function.
(sbitmap_popcount): Ditto.
* sbitmap.h (sbitmap): Remove bytes member.
Add popcount member.
(SET_BIT): Macro turned into function.
(RESET_BIT): Ditto.
(sbitmap_free): Free popcount too.
(sbitmap_alloc_with_popcount): New prototype.
(sbitmap_copy_n): Ditto.
(sbitmap_verify_popcount): Ditto.
2006-12-27 Ian Lance Taylor <>
PR debug/26964
* dwarf2out.c (gen_type_die): Don't write out a DIE for
ENUMERAL_TYPE if it was already written out.
2006-12-26 Kaveh R. Ghazi <>
PR middle-end/29335
* builtins.c (do_mpfr_arg1, do_mpfr_arg2, do_mpfr_arg3,
do_mpfr_sincos): Ensure target base equals two.
2006-12-26 Kazu Hirata <>
* tree-ssa-operands.c: Fix a comment typo.
2006-12-25 Kazu Hirata <>
* tree-vectorizer.h (VECT_SMODULO): Remove.
2006-12-24 Andreas Tobler <>
* config/pa/pa.c: Remove heap vector type defines.
2006-12-24 Jan Hubicka <>
* tree-ssa-operands.h (struct ssa_operand_memory_d):
add ssa_operand_mem_size.
* tree-ssa-operands.c (operands_bitmap_obstack): New.
(ssa_operand_mem_size): Remove.
(init_ssa_operands): Initialize obstack; use it.
(fini_ssa_operands): Release obstack.
(ssa_operand_alloc): Update.
(finalize_ssa_vdefs, finalize_ssa_vuse_ops, copy_virtual_operands,
get_mpt_for): Use obstack.
* tree-ssa.c (delete_tree_ssa): Call fini_ssa_operands.
* tree-outof-ssa.c: (remove_ssa_form): Don't call it here.
2006-12-24 Jan Hubicka <>
* tree-mudflap.c (ml_decl_cache_locals, md_build_check_statement_for):
add newly referenced vars.
2006-12-24 Kazu Hirata <>
* basic-block.h: Remove the prototype for
* rtl.h: Remove the prototypes for expand_builtin_expect_jump
and purge_line_number_notes.
2006-12-23 Zdenek Dvorak <>
* tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne,
assert_no_overflow_lt, assert_loop_rolls_lt,
number_of_iterations_lt, number_of_iterations_le,
number_of_iterations_cond, number_of_iterations_exit):
Use integer_zerop/integer_nonzerop instead of
* tree.h (null_or_integer_zerop, nonnull_and_integer_nonzerop):
* tree-scalar-evolution.c (simple_iv): Return zero for step of
an invariant.
* tree-ssa-loop-ivopts.c (alloc_iv): Do not set step of invariants
to zero.
(get_iv): Return NULL for non-scalar types. Use zero as a step
of an invariant.
(determine_biv_step, find_interesting_uses_op,
find_interesting_uses_cond, find_interesting_uses_stmt,
add_old_ivs_candidates, determine_use_iv_cost_condition,
rewrite_use_compare, remove_unused_ivs):
Use integer_zerop instead of null_or_integer_zerop.
(struct ifs_ivopts_data): Replace step_p field with step field.
(idx_find_step): Use zero as a step of an invariant. Modify
step instead of *step_p.
(find_interesting_uses_address): Use zero as a step of an invariant.
Use integer_zerop instead of null_or_integer_zerop.
(find_interesting_uses_outside): Call find_interesting_uses_op only
for phi nodes for real operands.
(add_candidate_1): Expect step to be non-NULL.
* tree-ssa-loop-prefetch.c (idx_analyze_ref): Expect step to be
2006-12-23 Andrew Pinski <>
* vec.c: Don't include tree.h.
* (vec.o): Update dependencies.
(build/vec.o): Likewise.
2006-12-23 Kazu Hirata <>
* common.opt (flag_force_mem): Remove.
* doc/invoke.texi (-fforce-mem): Remove.
* opts.c (common_handle_option): Don't handle OPT_fforce_mem.
* (final.o): Depend on vecprim.h.
* final.c: Include vecprim.h.
(insn_addresses_): Change the type to VEC(int,heap)*.
* insn-addr.h (INSN_ADDRESSES_DEFN): Remove.
2006-12-23 Marcin Dalecki <>
* cgraphunit.c (cgraph_optimize): Fixed obvious thinko in memory
consumption reporting.
2006-12-23 Manuel Lopez-Ibanez <>
PR middle-end/7651
* c.opt (Wmissing-parameter-type): New.
* doc/invoke.texi (Wmissing-parameter-type): Document it.
(Wextra): Enabled by -Wextra.
* c-opts.c (c_common_post_options): Enabled by -Wextra.
* c-decl.c (store_parm_decls_oldstyle): Replace Wextra with
2006-12-23 Eric Botcazou <>
* dwarf2out.c (dbx_reg_number): Do leaf register remapping
only if the function is leaf.
(multiple_reg_loc_descriptor): Likewise.
2006-12-23 Kazu Hirata <>
* rtl.h (NOTE_EXPECTED_VALUE): Remove.
2006-12-23 Jan Hubicka <>
* toplev.c (dump_memory_report): Break out from...
(finalize): Here.
* toplev.h (dump_memory_report): Declare.
(cmp_statistic): Rename to ...
(final_cmp_statistic): ... this one
(cmp_statistic): New.
(dump_ggc_loc_staitsitcs): New FINAL parpameter.
* common.opt (-fpre-ipa-mem-report, -fpost-ipa-mem-report): Declare.
* varray.c (dump_varray_staitiscs): Do not segfault when no varray was
allocated so far.
* cgraphunit.c (cgraph_optimize): Dump the memory reports.
2006-12-22 Mike Stump <>
* config/rs6000/t-darwin (DARWIN_EXTRA_CRT_BUILD_CFLAGS): Add
2006-12-23 Jan Hubicka <>
* tree-flow-inline.h (var_ann): External variable annotations are
unshared too.
(tree_common_ann): Handle correctly unshared variables annotations.
* tree-dfa.c (create_var_ann): External variable annotations are
unshared too.
2006-12-22 Kazu Hirata <>
* basic-block.h: Remove the prototype for
* cfgrtl.c (commit_edge_insertion): Drop the last argument.
(commit_edge_insertions_watch_calls): Remove.
(commit_edge_insertions): Adjust the call to
2006-12-22 Zdenek Dvorak <>
* tree-ssa-loop-niter.c (zero_p, nonzero_p): Removed.
(number_of_iterations_ne, number_of_iterations_lt_to_ne,
assert_no_overflow_lt, assert_loop_rolls_lt,
number_of_iterations_lt, number_of_iterations_le,
number_of_iterations_cond, tree_simplify_using_condition_1,
number_of_iterations_exit, find_loop_niter, loop_niter_by_eval,
implies_nonnegative_p, implies_ge_p, record_nonwrapping_iv,
idx_infer_loop_bounds, n_of_executions_at_most, scev_probably_wraps_p):
Do not use zero_p/nonzero_p.
* tree-ssa-loop-manip.c (determine_exit_conditions): Ditto.
* tree-ssa-loop-ivopts.c (niter_for_exit, determine_biv_step,
find_interesting_uses_op, find_interesting_uses_cond,
find_interesting_uses_address, find_interesting_uses_stmt,
strip_offset_1, add_candidate_1, add_old_ivs_candidates,
difference_cost, determine_use_iv_cost_condition,
rewrite_use_compare, remove_unused_ivs): Ditto.
* tree-ssa-address.c (tree_mem_ref_addr, create_mem_ref_raw): Ditto.
* tree-ssa-loop-prefetch.c (idx_analyze_ref): Ditto.
* tree-cfg.c (find_taken_edge_cond_expr): Ditto.
* tree.h (zero_p): Declaration removed.
(null_or_integer_zerop, nonnull_and_integer_nonzerop): New.
2006-12-22 Manuel Lopez-Ibanez <>
PR middle-end/7651
* c.opt (Wclobbered): New.
* doc/invoke.texi (Wclobbered): Document it.
(Wextra): Enabled by -Wextra.
* c-opts.c (c_common_post_options): Enabled by -Wextra.
* flow.c (rest_of_handle_life): Replace Wextra with Wclobbered.
* function.c (setjmp_vars_warning): Only warn for Wclobbered.
(setjmp_args_warning): Likewise.
2006-12-22 Kazu Hirata <>
* config/elfos.h, config/spu/spu.c, tree-ssa-operands.h,
tree-ssa-ter.c: Fix comment typos.
2006-12-22 Paolo Bonzini <>
PR rtl-optimization/29840
* fwprop.c (forward_propagate_into): Reject artificial uses/defs.
(fwprop_init): Add DF_HARD_REGS to df_init call.
2006-12-21 Andrew Pinski <>
* tree-nested.c (create_tmp_var_for): Check for vector type
when setting DECL_GIMPLE_REG_P.
2006-12-21 Roger Sayle <>
* tree-pretty-print.c (dump_generic_node): Avoid outputing "(void) 0;"
as the else branch of a COND_EXPR.
2006-12-22 Kazu Hirata <>
* cgraphunit.c, config/i386/i386.c, config/ia64/ia64.c, cse.c,
output.h, toplev.c, tree-affine.h, tree-flow.h,
tree-ssa-alias.c, tree-ssa-coalesce.c, tree-ssa-live.c,
tree-ssa-live.h, tree-ssa-operands.c, tree-ssa-ter.c,
tree-vrp.c, varpool.c: Fix comment typos.
* cgraphunit.c, varpool.c: Fix comment typos.
2006-12-22 Ulrich Weigand <>
* config/spu/spu.h (ARG_POINTER_CFA_OFFSET): Define.
* config/spu/spu.c (spu_expand_prologue): Set RTX_FRAME_RELATED_P
for insn setting up the frame pointer. Do not set it for insns
setting up scratch registers or storing the backchain.
2006-12-21 Eric Botcazou <>
PR other/29639
* (HAVE_LD_EH_GC_SECTIONS): Check that exception tables
are kept for .gnu.linkonce.t sections if COMDAT groups are disabled.
* configure: Regenerate.
2006-12-21 Joseph Myers <>
* rtlanal.c (subreg_get_info): Do not make register size
computations for mode sizes not divisible by the number of
2006-12-21 Daniel Berlin <>
* tree-ssa-structalias.c (build_constraint_graph): Insert complex
offsetted constraints into rhsvar, not lhsvar.
2006-12-21 Jakub Jelinek <>
PR middle-end/30262
PR middle-end/30263
* tree-nested.c (walk_asm_expr): New function.
(walk_stmts): Use it for ASM_EXPR.
PR target/30230
* config/ia64/ia64.c (ia64_add_bundle_selector_before): New function.
(bundling): Use it.
2006-12-21 Nathan Sidwell <>
PR target/28966
PR target/29248
* reload1.c (reload): Realign stack after it changes size.
2006-12-20 Roger Sayle <>
* simplify-rtx.c (simplify_subreg): Use the correct mode when
determining whether a SUBREG of a CONCAT refers to the first or
second component.
2006-12-21 Ben Elliston <>
* config/spu/spu.c (spu_builtin_mul_widen_even): Remove unused
local variable `d'.
2006-12-20 Jan Hubicka <>
* tree-dfa.c (add_referenced_var): Walk initializers of
non-constant/readonly static vars.
2006-12-20 Jan Hubicka <>
* tree-flow-inline.h (gimple_var_anns): New function.
(var_ann): Use hashtable for static functions.
* tree-dfa.c (create_var_ann): Likewise.
* tree-ssa.c (var_ann_eq, var_ann_hash): New functions.
(init_tree_ssa): Initialize var anns.
(delete_tree_ssa): Delete var anns; also clear out gimple_df.
* tree-flow.h (struct static_var_ann_d): New structure.
(gimple_df): Add var_anns.
2006-12-20 Carlos O'Donell <>
PR bootstrap/30242
* gcc/c-incpath.c (add_standard_paths): Only relocate paths that
begin with the configured prefix.
2006-12-20 Jan Hubicka <>
PR target/30213
* i386.c (expand_setmem_epilogue): Fix formating.
(dsmalest_pow2_greater_than): New function.
(ix86_expand_movmem): Improve comments; avoid re-computing of
epilogue size.
(promote_duplicated_reg_to_size): Break out from ...
(expand_setmem): ... this one; reorganize promotion code;
improve comments; avoid recomputation of epilogue size.
2006-12-20 Andrew Pinski <>
PR middle-end/30143
* omp-low.c (init_tmp_var): New function.
(save_tmp_var): New function.
(lower_omp_1): Use them for VAR_DECL.
2006-12-20 Andrew Pinski <>
* tree-gimple.c (is_gimple_min_invariant): Treat constant vector
CONSTRUCTORs as min invariants.
2006-12-20 Joseph Myers <>
* rtlanal.c (struct subreg_info, subreg_get_info, subreg_nregs):
(subreg_regno_offset, subreg_offset_representable_p): Change to
wrappers about subreg_get_info.
(refers_to_regno_p, reg_overlap_mentioned_p): Use subreg_nregs.
* rtl.h (subreg_nregs): Declare.
* doc/tm.texi (HARD_REGNO_NREGS_HAS_PADDING): Update to refer to
* caller-save.c (mark_set_regs, add_stored_regs): Use
* df-scan.c (df_ref_record): Use subreg_nregs.
* flow.c (mark_set_1): Use subreg_nregs.
* postreload.c (move2add_note_store): Use subreg_nregs.
* reload.c (decompose, refers_to_regno_for_reload_p,
reg_overlap_mentioned_for_reload_p): Use subreg_nregs.
* resource.c (update_live_status, mark_referenced_resources,
mark_set_resources): Use subreg_nregs.
2006-12-20 Zdenek Dvorak <>
* loop-unswitch.c (unswitch_loop): Update arguments of
duplicate_loop_to_header_edge call.
* tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Ditto.
* loop-unroll.c (peel_loop_completely, unroll_loop_constant_iterations,
unroll_loop_runtime_iterations, peel_loop_simple, unroll_loop_stupid):
* cfgloopmanip.c (loop_version): Ditto.
(duplicate_loop_to_header_edge): Change
type of to_remove to VEC(edge), remove n_to_remove argument.
* tree-ssa-loop-manip.c (tree_duplicate_loop_to_header_edge):
Change type of to_remove to VEC(edge), remove n_to_remove argument.
(tree_unroll_loop): Update arguments of
tree_duplicate_loop_to_header_edge call.
* cfghooks.c (cfg_hook_duplicate_loop_to_header_edge):
Change type of to_remove to VEC(edge), remove n_to_remove argument.
* cfghooks.h (struct cfg_hooks): Type of
cfg_hook_duplicate_loop_to_header_edge changed.
(cfg_hook_duplicate_loop_to_header_edge): Declaration changed.
* cfgloop.h (duplicate_loop_to_header_edge): Ditto.
* tree-flow.h (tree_duplicate_loop_to_header_edge): Ditto.
2006-12-20 Dorit Nuzman <>
* config/spu/ (vec_widen_umult_hi_v8hi): New.
(vec_widen_umult_lo_v8hi, vec_widen_smult_hi_v8hi): New.
(vec_widen_smult_lo_v8hi): New.
* config/spu/spu.c (TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN): Defined.
(spu_builtin_mul_widen_even, spu_builtin_mul_widen_odd): New.
2006-12-20 Jan Hubicka <>
* cgraph.c: Update overall comment; fix vertical spacing.
* ipa-inline.c (cgraph_decide_inlining): Remove now redundant check.
2006-12-20 Jan Hubicka <>
(varpool_first_static_initializer, varpol_next_static_initializer): New
inline functions.
* ipa-reference.c (analyze_variable): Simplify.
(static_execute): Use FOR_EACH_STATIC_INITIALIZER.
* ipa-type-escape.c (type_escape_execute): Use FOR_EACH_STATIC_VARIABLE.
2006-12-19 Andrew Pinski <>
PR tree-opt/30045
* tree-vrp.c (nonnull_arg_p): Treat the static decl as always
non null.
2006-12-20 Ben Elliston <>
* doc/invoke.texi (Optimize Options): Typo fix.
2006-12-19 Eric Christopher <>
* config/darwin.c (machopic_select_section): Rewrite.
(darwin_text_section): New.
(darwin_rodata_section): Ditto.
(darwin_mergeable_string_section): Ditto.
(darwin_mergeable_constant_section): Ditto.
* config/darwin-sections.def: Add SECTION_STRINGS for cstring_section.
2006-12-19 Steve Ellcey <>
* config/pa/pa64-hpux.h (ASM_OUTPUT_EXTERNAL): Add undef.
2006-12-19 Paolo Bonzini <>
PR bootstrap/29544
* gcc/ (STAGE1_CHECKING): Rename to...
2006-12-18 Andrew Pinski <>
PR target/29779
* config/rs6000/rs6000.c (altivec_init_builtins): Change to set
READONLY on __builtin_altivec_mask_for_load instead of adding
the attribute.
2006-12-18 Roger Sayle <>
Eric Christopher <>
PR target/29302
* real.c (real_maxval): Correctly handle IBM extended double format.
2006-12-19 Jan Hubicka <>
* expmed.c (expand_mult_const): Force operand to constant.
* rs6000.c (rs6000_emit_set_const, rs6000_emit_set_long_const): Add
copy_rtx to arguments.
2006-12-19 Ben Elliston <>
* config/spu/spu.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define.
2006-12-19 Ben Elliston <>
* cse.c (cse_insn): Fix formatting.
2006-12-18 Geoffrey Keating <>
* doc/invoke.texi (Debugging Options): Document -g0.
* config/darwin.h (LINK_COMMAND_SPEC): Replace -gnone with -g0.
* config/darwin9.h (LINK_COMMAND_SPEC): Likewise.
2006-12-18 Ian Lance Taylor <>
* c.opt (Wmissing-declarations): Add C++ and ObjC++.
* doc/invoke.texi (Warning Options): -Wmissing-declarations now
works for C++.
2006-12-18 Andrew MacLeod <>
* tree-ssa-operands.h (struct vdef_optype_d): Rename to voptype_d.
(struct vuse_optype_d): Delete.
(struct ssa_operand_memory_d): Change mem array to size one.
(free_vuses, free_vdefs): Replace with vop_free_buckets array.
(vdef_ops, vuse_ops, struct ssa_operand_iterator_d): Use voptype_d type.
* tree-pretty-print.c (dump_vops): Use voptype_d type.
* tree-ssa-operands.c (vop_free_bucket_size): New. Number of operands
which fit into a chunk of memory from a specific bucket.
(vop_free_bucket_index): New. Find correct size memory bucket.
(init_vop_buckets): New. Initialize VOP free memory buckets.
(add_vop_to_freelist): New. Add a VOP to the correct free list.
(ssa_operand_mem_size): New. Current size of an operand memory chunk.
(init_ssa_operands): Initialize operand memory and free lists.
(fini_ssa_operands): Remove references to free_vuses and free_vdefs.
(ssa_operand_alloc): Use graduated size memory allocation.
(alloc_vop): New. Allocate a virtual operand.
(alloc_vdef, alloc_vuse): Delete.
(add_def_op, add_use_op): Directly setup pointers.
(add_vop): New. Add a virtual operand.
(add_vuse_op, add_vdef_op): Call add_vop.
(realloc_vop): New. Reallocate a virtual operand.
(realloc_vdef, realloc_vuse): Call realloc_vop.
(finalize_ssa_def_ops): Delete. Move content to finalize_ssa_defs.
(finalize_ssa_defs): Optimize for common case, remove code based on
sorted pointers which was a waste of time.
(finalize_ssa_use_ops): Delete. Move content to finalize_ssa_uses.
(finalize_ssa_uses): Update last pointer.
(finalize_ssa_vdef_ops): Delete. Move content to finalize_ssa_vdefs.
(finalize_ssa_vdefs, finalize_ssa_vuse_ops): Use voptype_d and
directly manipulate pointers.
(copy_virtual_operands): Use voptype_d, and no need to update pointers.
2006-12-18 Nathan Sidwell <>
* config/rs6000/ (*movdf_hardfloat32): Use %X format to
determine if memory operand is an indexed address or not.
2006-12-17 Steven Bosscher <>
* cselib.c (struct cselib_val_struct): Make val_rtx its
own field, remove the union that contained it.
* cselib.c: Update accordingly where necessary.
2006-12-17 Steven Bosscher <>
* cse.c (have_eh_succ_edges): New function.
(cse_insn): Don't remove dead EH edges here
(cse_extended_basic_block): Do it here.
(rest_of_handle_cse, rest_of_handle_cse2): Don't assert
that we have removed all dead edges.
2006-12-17 Matthias Klose <>
PR libstdc++/11953
* gcc/config/mips/linux.h (SUBTARGET_CPP_SPEC): Extend.
2006-12-17 Steven Bosscher <>
* cse.c (cse_find_path): Don't wrap a gcc_assert in ENABLE_CHECKING.
(cse_extended_basic_block): When truncating a path while processing
it, make sure to clear the visited bit on the basic blocks in the
truncated part of the path.
(cse_main): Use reverse completion order, not DFS order, to walk
the CFG.
(gate_handle_cse): Revert erroneous commit of a counter.
2006-12-17 Steven Bosscher <>
* cse.c (this_insn_cc0, this_insn_cc0_mode): New global
variables, moved out from cse_insn.
(prev_insn): Remove this global variable).
(new_basic_block): Don't set it.
(cse_insn): Idem. Also, move code to delete unused CC0-setter
insns and code to set prev_insn_cc0 and prev_insn_cc0_mode
from here...
(cse_extended_basic_block): here. Do not clear
prev_insn_cc0 until after recording equivalences from jumps.
2006-12-16 Jan Hubicka <>
* cgraphunit.c (ipa_passes): Clear current_function_decl.
2006-12-16 Andreas Tobler <>
* passes.c (verify_curr_properties): Define only for ENABLE_CHECKING.
2006-12-16 Jan Hubicka <>
* omp-low.c (expand_omp_parallel): Set function properties.
* function.h (struct function): Add curr_properties and last_verified.
* passes.c (register_dump_files): Do not set TODO_set_props for the
first pass
(init_optimization_passes): Set it here; reorder initialization so the
dump files appear in more logical order.
(last_verified, curr_properties): Kill.
(do_per_function): New function.
(execute_function_todo): Break out from ...
(execute_todo): ... here; handle per-function flags.
(clear_last_verified, verify_curr_properties,
update_properties_after_pass): New functions.
(execute_one_pass): Handle per-function properties.
(execute_ipa_pass_list): Use do_per_function; sanity check that cfun
and current_function_decls are cleared out.
* ipa-cp.c (constant_val_insert): Clear cfun/current_function_decl
after use.
2006-12-16 Manuel Lopez-Ibanez <>
PR middle-end/7651
* c.opt (Wempty-body): New.
* doc/invoke.texi (Wempty-body): Document it.
(Wextra): Enabled by -Wextra.
* c-opts.c (c_common_post_options): Enabled by -Wextra.
* c-common.c (empty_body_warning): Replace Wextra with Wempty-body.
* c-parser.c (c_parser_c99_block_statement): Likewise.
2006-12-15 Jakub Jelinek <>
PR target/30185
* config/rs6000/ (div<mode>3): Use correct mode in
force_reg call.
2006-12-15 Andrew Pinski <>
PR tree-opt/30140
* tree-inline.c (setup_one_parameter): Gimplify the statement if
the variable is not a gimple register variable.
2006-12-15 Uros Bizjak <>
* invoke.texi (mstringop-strategy): Add missing "byte_loop" value.
2006-12-14 Jan Hubicka <>
* tree-flow.h (struct stmt_ann_d): Move bitfield references_memory
to proper place.
2006-12-14 Richard Guenther <>
PR tree-optimization/30197
* builtins.c (fold_builtin_cexp): New function to fold cexp
to cexpi and exp parts.
* tree-ssa-pre.c (try_combine_conversion): Also handle
2006-12-14 Richard Guenther <>
PR middle-end/30172
* fold-const.c (fold_binary): Fold __complex__ ( x, 0 )
+ __complex__ ( 0, y ) to __complex__ ( x, y ).
Fold __complex__ (x, y) * +-I to __complex__ (-+y, +-x).
2006-12-14 Richard Guenther <>
PR tree-optimization/30198
* fold-const.c (fold_unary): Fold REALPART_EXPR of cexpi to cos.
Fold IMAGPART_EXPR of cexpi to sin.
2006-12-14 Dorit Nuzman <>
Trevor Smigiel <>
(spu_init_builtins): Mark the SPU_MASK_FOR_LOAD builtin decl as read
(spu_expand_builtin_1): Handle the SPU_MASK_FOR_LOAD builtin.
(spu_builtin_mask_for_load): New.
* spu-builtins.def (SPU_MASK_FOR_LOAD): Define new builtin.
(vec_realign_load_<mode>, spu_lvsr): New.
2006-12-13 Ian Lance Taylor <>
PR c++/19564
PR c++/19756
* c-typeck.c (parser_build_binary_op): Move parentheses warnings
to warn_about_parentheses in c-common.c.
* c-common.c (warn_about_parentheses): New function.
* c-common.h (warn_about_parentheses): Declare.
* doc/invoke.texi (Warning Options): Update -Wparentheses
2006-12-13 Zdenek Dvorak <>
* tree-ssa-loop-ivopts.c: Include tree-affine.h.
(divide): Removed.
(constant_multiple_of): Fix order of operators for division.
(aff_combination_const, aff_combination_elt, aff_combination_scale,
aff_combination_add_elt, aff_combination_add, aff_combination_convert,
tree_to_aff_combination, add_elt_to_tree, unshare_aff_combination,
aff_combination_to_tree): Moved to tree-affine.c and made to work with
double_int coefficients.
(get_computation_aff, get_computation_at): Work with double_int
(get_computation_cost_at): Do not use divide.
(rewrite_use_nonlinear_expr, rewrite_use_address, rewrite_use_compare):
Assert that expressing the computation did not fail.
* tree-ssa-address.c: Include tree-affine.h.
(add_to_parts, most_expensive_mult_to_index, addr_to_parts,
create_mem_ref): Work with double_int coefficients.
* tree-affine.c: New file.
* tree-affine.h: New file.
* tree-flow.h (struct affine_tree_combination): Removed.
* (tree-affine.o): Add.
(tree-ssa-address.o, tree-ssa-loop-ivopts.o): Add tree-affine.h
2006-12-13 Peter Bergner <>
PR middle-end/30191
* reload1.c (eliminate_regs_in_insn): Merge the plus_src "else" and
the offset == 0 "then" clauses.
* config/rs6000/ (gpc_reg_operand): Check for
2006-12-13 Uros Bizjak <>
* config/i386/i386.h (FIRST_PSEUDO_REGISTER): Define to 53.
(REG_ALLOC_ORDER): Remove one element due to removal of dir register.
(FRAME_POINTER_REGNUM): Update register number to 20.
(REG_CLASS_CONTENTS): Update contents due to removed dir register.
(HI_REGISTER_NAMES): Remove "dirflag".
* config/i386/i386.c (regclass_map): Remove dirflag entry.
(dbx_register_map, dbx64_register_map, svr4_dbx_register_map):
Remove "dir" entry.
(ix86_md_asm_clobbers): Remove "dirflag" default asm clobber.
* config/i386/ (R10_REG, R11_REG): Renumber.
(sse_prologue_save, *sse_prologue_save_insn): Renumber
hardcoded SSE register numbers.
* config/i386/ (mmx_emms, mmx_femms): Renumber
hardcoded MMX register numbers.
2006-12-13 Mark Shinwell <>
* config/arm/arm.c (arm_output_fldmx): Output FLDMD instead of
FLDMX. Rename function to...
(vfp_output_fldmd): ...this.
(vfp_output_fstmx): Output FSTMD instead of FSTMX. Rename
function to...
(vfp_output_fstmd): ...this.
(vfp_emit_fstmx): Don't leave space in the frame layout for the
FSTMX format word. Rename function to...
(vfp_emit_fstmd): ...this.
(arm_get_vfp_saved_size): Don't add in space for the FSTMX format
(arm_output_epilogue): Adjust comment to reflect use of FSTMD.
(arm_unwind_emit_sequence): Don't compensate for the FSTMX format
word. Also emit "vsave" assembler directives in such cases rather
than "save".
* config/arm/libunwind.S (gnu_Unwind_Restore_VFP,
gnu_Unwind_Save_VFP): Adjust comments.
(gnu_Unwind_Restore_VFP_D, gnu_Unwind_Save_VFP_D): New functions
for saving and restoring using FSTMD and FLDMD rather than
(gnu_Unwind_Restore_VFP_D_16_to_31, gnu_Unwind_Restore_VFP_D_16_to_31):
New functions for saving and restoring the VFPv3 registers 16 .. 31.
* config/arm/pr-support.c (gnu_unwind_execute): Add conditional
compilation case to correctly handle unwind opcode 0xc8 when using
* config/arm/unwind-arm.c (struct vfpv3_regs): New.
(__gnu_Unwind_Save_VFP_D, __gnu_Unwind_Restore_VFP_D,
__gnu_Unwind_Save_VFP_D_16_to_31, __gnu_Unwind_Restore_VFP_D_16_to_31):
(restore_non_core_regs): Restore registers using FLDMD rather than
FLDMX if required. Also handle restoration of VFPv3 registers.
(_Unwind_VRS_Pop): Handle saving and restoring of registers using
FSTMD and FLDMD if required; also handle VFPv3 registers 16 .. 31,
including cases where the caller specifies a range of registers
that overlaps the d15/d16 boundary.
2006-12-13 Diego Novillo <>
PR 30089
* tree-ssa-operands.h (SSA_OPERAND_MEMORY_SIZE): Add space to
accomodate 511 operands.
2006-12-13 Richard Guenther <>
* builtins.c (expand_builtin_cexpi): Fix typo.
2006-12-13 Jan Hubicka <>
* Add dependencies.
* tree-pretty-print.c: Include value-prof.h
(dump_generic_bb_buff): Dump histograms
* value-prof.c: Include pointer-set.h
(gimple_alloc_histogram_value, histogram_hash, histogram_eq,
set_histogram_value, gimple_histogram_value,
gimple_add_histogram_value, gimple_remove_histogram_value,
gimple_histogram_value_of_type, dump_histogram_value,
dump_histograms_for_stmt, gimple_remove_stmt_histograms,
gimple_duplicate_stmt_histograms, visit_hist,
verify_histograms): New functions.
(tree_value_profile_transformations): Update for new histogram API.
(tree_divmod_fixed_value): Update for new histogram API.
(tree_divmod_fixed_value_transform): Update for new histogram API.
(tree_mod_pow2): Update for new histogram API.
(tree_mod_pow2_value_transform): Update for new histogram API.
(tree_mod_subtract): Update for new histogram API.
(tree_mod_subtract_transform): Update for new histogram API.
(tree_stringops_transform): Update for new histogram API.
(tree_divmod_values_to_profile): Update for new histogram API.
(tree_stringops_values_to_profile): Update for new histogram API.
(tree_find_values_to_profile): Update for new histogram API.
* value-prof.h (gimple_histogram_value): Declare.
(gimple_histogram_value_of_type): Declare.
(gimple_add_histogram_value): Declare.
(gimple_remove_histogram_value): Declare.
(dump_histograms_for_stmt): Declare.
(gimple_remove_histogram_value): Declare.
(gimple_remove_stmt_histograms): Declare.
(gimple_duplicate_stmt_histograms): Declare.
(verify_histograms): Declare.
* function.h
(struct funrction): Add value_histograms hash.
* profile.c (compute_value_histograms): update for new API.
* tree-inline.c: Include value-prof.h
(copy_bb): Update histograms.
* tree-flow.h (struct stmt_ann_d): Do not contain pointer to histograms;
reorder to get smaller memory layout.
* tree-cfg.c: Include value-prof.h
(bsi_remove): Update histograms.
(bsi_replace): Update histograms.
(verify_stmts): Call histogram verifier.
(tree_duplicate_bb): Update histograms.
(move_block_to_fn): Update histograms.
2006-12-13 Richard Guenther <>
* ipa-inline.c (cgraph_flatten_node): Replace leafify with
(cgraph_decide_inlining): Likewise.
2006-12-13 Richard Guenther <>
PR tree-optimization/17687
New builtins for imaginary argument cexp.
* builtin-types.def (BT_FN_COMPLEX_FLOAT_FLOAT,
New required builtin types.
* builtins.c (expand_builtin_cexpi): Declare.
(mathfn_built_in): Handle BUILT_IN_CEXPI.
(expand_builtin_cexpi): New static helper.
(expand_builtin): Call it.
(do_mpfr_sincos): Adjust for CEXPI evaluation.
(fold_builtin_sincos): New function to fold sincos to cepxi.
2006-12-13 Richard Guenther <>
* ipa-reference.c (scan_for_static_refs): Also scan
tcc_comparison class trees.
2006-12-12 David Daney <>
* config/mips/mips.h (ASM_OUTPUT_EXTERNAL): Undefine it before
2006-12-12 Andrew Pinski <>
* tree-vect-transform.c (vect_permute_load_chain):
Set DECL_GIMPLE_REG_P to true for the vect_perm_*
temp variables.
2006-12-13 Sa Liu <>
Ben Elliston <>
* config/spu/spu.h (C_COMMON_OVERRIDE_OPTIONS): Define.
(REGISTER_TARGET_PRAGMAS): Don't zero warn_main flag.
* config/spu/spu-protos.h (spu_c_common_override_options):
* config/spu/spu-c.c (spu_c_common_override_options): New.
* config/spu/spu.c (spu_override_options): Whitespace fix.
2006-12-12 Trevor Smigiel <>
* config/spu/spu.c (cpat_info): Fix an incorrectly identified case.
2006-12-12 Geoffrey Keating <>
* mips-tdump.c: Replace CROSS_COMPILE with
* mips-tfile.c: Likewise.
* gcc.c: Likewise.
* Likewise.
* cppdefault.c: Likewise.
* Likewise.
* config/alpha/osf.h: Likewise.
* config/i386/cygwin.h: Likewise.
* config/i386/beos-elf.h: Likewise.
* config/i386/nto.h: Likewise.
* config/fr30/fr30.h: Likewise.
* config/svr4.h: Likewise.
* config/rs6000/aix.h: Likewise.
* config/rs6000/sysv4.h: Likewise.
* config/pa/pa64-hpux.h: Likewise.
* config/pa/pa-hpux10.h: Likewise.
* config/pa/pa-hpux11.h: Likewise.
* collect2.c: Likewise.
* configure: Regenerate.
* doc/tm.texi (Alignment Output): Document that ASM_OUTPUT_SKIP
actually takes an unsigned HOST_WIDE_INT for its second parameter.
2006-12-13 Ulrich Weigand <>
* config/spu/spu.c (TARGET_ENCODE_SECTION_INFO): Define.
(spu_encode_section_info): New.
* config/spu/spu.h (ALIGNED_SYMBOL_REF_P): Adjust.
2006-12-12 Andrew Pinski <>
PR tree-opt/28624
* tree-ssa-dom.c (eliminate_degenerate_phis): Use a temporary
2006-12-12 Andrew Pinski <>
PR tree-opt/28436
* tree.h (DECL_COMPLEX_GIMPLE_REG_P): Rename to ...
* fold-const.c (fold_indirect_ref_1): Fold *(foo *)&vectorfoo into
* omp-low.c (omp_copy_decl_2): Use the renamed DECL_GIMPLE_REG_P.
* tree-gimple.c (is_gimple_reg): Use the renamed DECL_GIMPLE_REG_P
and check for VECTOR_TYPE.
* expr.c (get_inner_reference): Set the mode for BIT_FIELD_REF with
vector types.
* tree-flow-inline.h (var_can_have_subvars): Use the renamed
* gimplify.c (internal_get_tmp_var): Use the renamed DECL_GIMPLE_REG_P
and check for VECTOR_TYPE.
(gimplify_bind_expr): Likewise.
(gimplify_function_tree): Likewise.
* expmed.c: Include target.h.
(extract_bit_field): For vector mode, try find a better mode first.
If that fails use gen_lowpart (for vectors only).
* tree-dfa.c (make_rename_temp): Use the renamed DECL_GIMPLE_REG_P
and check for VECTOR_TYPE.
* tree-ssa-pre.c (create_expressions_by_pieces): Likewise.
(insert_into_preds_of_block): Likewise.
(insert_fake_stores): Create gimple register store_tmps for
vector types.
* tree-sra.c (sra_elt): New field, is_vector_lhs.
(sra_walk_expr <case BIT_FIELD_REF>): For vector types that
are the left hand side, set the element's is_vector_lhs to true.
(instantiate_element): For vector types which were on the left
hand size, set DECL_GIMPLE_REG_P to false.
* tree-nested.c (create_tmp_var_for): Use the renamed
* tree-inline.c (declare_return_variable): Use the renamed
(copy_decl_to_var): Use the renamed DECL_GIMPLE_REG_P.
(copy_result_decl_to_var): Likewise.
* tree-vect-transform.c (vect_get_new_vect_var): For vector types,
create a gimple register variable.
(vect_permute_store_chain): Set DECL_GIMPLE_REG_P to true for the
vect_inter_* temp variables.
* (expmed.o): Update dependencies.
2006-12-12 Peter Bergner <>
* reload1.c (eliminate_regs_in_insn): Merge the plus_src "else" and
the offset == 0 "then" clauses.
* config/rs6000/ (gpc_reg_operand): Check for
2006-12-12 Marcin Dalecki <>
* doc/passes.texi: remove docs about "redundant PHI removal".
* tree-pass.h: remove orphaned declaration of pass_redundant_phi,
remove redundant pass_partition_blocks declaration.
2006-12-12 Andrew Macleod <>
PR tree-optimization/30159
* tree-ssa-coalesce.c (coalesce_ssa_name): Process single ssa_name
functions in case a default_def coalesce is required.
2006-12-12 Jakub Jelinek <>
PR libstdc++/11953
* gthr-posix.h (_REENTRANT): Only define if __osf__ is defined.
* config/ia64/linux.h (CPP_SPEC): Define.
* config/s390/linux.h (CPP_SPEC): Define.
2006-12-12 Jim Wilson <>
Jakub Jelinek <>
PR rtl-optimization/27761
* combine.c (try_combine): Don't create a useless garbage SET
if PATTERN (i2) is a PARALLEL. If added_sets_1, save
PATTERN (i1) resp. SET from i1src to i1dest in i1pat
and use it to prevent accidental modification of i1src.
2006-12-12 Ira Rosen <>
* tree-vect-analyze.c (vect_analyze_data_ref_access): Add another check
for stores with gaps.
* tree-vect-transform.c (vect_permute_store_chain): Create
interleave_high or interleave_low according to the endianess.
2006-12-12 Richard Guenther <>
PR middle-end/30147
* fold-const.c (fold_read_from_constant_string): Only fold read
from constant string if the result type is integer.
2006-12-12 Olivier Hainque <>
* config/rs6000/t-vxworks: Remove assignment to LIB2FUNCS_EXTRA.
2006-12-12 Olivier Hainque <>
* config/vxlib.c: Extract tls related routines into ...
* config/vxlib-tls.c: New file.
* config/t-vxworks: Add vxlib-tls.c to LIB2FUNCS_EXTRA.
2006-12-12 Sa Liu <>
Ben Elliston <>
* config/spu/spu.opt (mfixed-range): New option.
* config/spu/spu.h (spu_fixed_range_string): Declare.
* config/spu/spu.c (spu_override_options): Handle -mfixed-range.
(fix_range): New function.
* doc/invoke.texi (SPU Options): Document -mfixed-range.
* testsuite/ New.
* testsuite/ Ditto.
2006-12-11 H.J. Lu <>
PR middle-end/17982
PR middle-end/20218
* cgraphunit.c (cgraph_optimize): Remove call to
* config/elfos.h (ASM_OUTPUT_EXTERNAL): New.
* config/ia64/hpux.h (TARGET_ASM_FILE_END): Removed.
* config/ia64/ia64.c (ia64_asm_output_external): Rewritten.
(ia64_hpux_add_extern_decl): Removed.
(ia64_hpux_file_end): Likewise.
(extern_func_list): Likewise.
(extern_func_head): Likewise.
* output.h (assemble_external): Update comments.
(default_elf_asm_output_external): New.
(maybe_assemble_visibility): New.
* toplev.c (compile_file): Update comment.
* varasm.c (assemble_external): Always put it on
(maybe_assemble_visibility): Make it extern and return int.
(default_elf_asm_output_external): New.
2006-12-11 Daniel Berlin <>
* tree-ssa-structalias.c (handle_ptr_arith): Return false when we
can't handle the pointer arithmetic.
2006-12-11 Diego Novillo <>
* doc/tree-ssa.texi: Update documentation for virtual operands
and the use of push_stmt_changes/pop_stmt_changes.
* doc/invoke.texi: Remove documentation for params
Update documentation on max-aliased-vops.
* tree-into-ssa.c: Cleanup comments, variables and
spacing in various functions.
(regs_to_rename): Declare.
(mem_syms_to_rename): Declare.
(dump_update_ssa): Declare.
(debug_update_ssa): Declare.
(dump_names_replaced_by): Declare.
(debug_names_replaced_by): Declare.
(dump_def_blocks): Declare.
(debug_def_blocks): Declare.
(dump_defs_stack): Declare.
(debug_defs_stack): Declare.
(dump_currdefs): Declare.
(debug_currdefs): Declare.
(mark_def_sites): Do not handle virtual operands.
(compute_idf): Rename from find_idf. Update users.
(register_new_def): Make local. Convert second argument
to 'tree'.
Use BLOCK_DEFS_STACK directly.
If pushing a non-register, also push the underlying
(rewrite_stmt): Do not handle virtual operands.
(dump_tree_ssa): Call dump_def_blocks, dump_defs_stack,
dump_currdefs and dump_tree_ssa_stats.
(dump_tree_ssa_stats): Also dump REPL_TBL.
(replace_use): Remove. Update all users to call SET_USE
(rewrite_blocks): Move code to free memory to
(mark_def_site_blocks): Move initialization code to
(init_ssa_renamer): New.
(fini_ssa_renamer): New.
(rewrite_into_ssa): Call them.
(prepare_block_for_update): Process SSA_OP_ALL_USES first
and SSA_OP_ALL_DEFS later. Do not process virtual
operands separately.
(dump_update_ssa): Call dump_decl_set.
(init_update_ssa): Initialize regs_to_rename and
Call init_ssa_renamer.
(delete_update_ssa): Call fini_ssa_renamer.
Free blocks_with_phis_to_rewrite.
(mark_sym_for_renaming): If the variable has
sub-variables, also mark them.
If the variable belongs to a partition, also mark it.
(mark_set_for_renaming): Call mark_sym_for_renaming on
every symbol in the set.
(switch_virtuals_to_full_rewrite): Call
(update_ssa): Separate syms_to_rename into regs_to_rename
and mem_syms_to_rename.
* tree-dump.c (dump_options): Add TDF_MEMSYMS.
* tree-pretty-print.c (debug_generic_expr): Add TDF_MEMSYMS.
(debug_generic_stmt): Likewise.
(debug_tree_chain): Likewise.
(dump_symbols): New.
(dump_generic_node): Check for TDF_MEMSYMS.
If the statement references memory and TDF_MEMSYMS is
given, call dump_symbols.
Indicate default names with (D).
(dump_vops): Update for new virtual operator format.
* tree.c (init_ttree): Add MEMORY_PARTITION_TAG to
(tree_code_size): Handle MEMORY_PARTITION_TAG.
(tree_node_structure): Likewise.
(needs_to_live_in_memory): Handle SSA names.
* tree.h (MTAG_P): Likewise.
(struct tree_memory_partition_tag): Declare.
(MPT_SYMBOLS): Define.
(union tree_node): Add field 'mpt'.
* treestruct.def (TS_MEMORY_PARTITION_TAG): Define.
* tree.def (MEMORY_PARTITION_TAG): Define.
* tree-pass.h (TDF_MEMSYMS): Define.
* params.h (GLOBAL_VAR_THRESHOLD): Remove.
* tree-ssa-alias.c: Include pointer-set.h
(struct alias_map_d): Remove fields total_alias_vops,
grouped_p and may_aliases. Update all users.
(struct mp_info_def): Declare.
(mp_info_t): New type.
(get_smt_for): Rename from get_tmt_for. Update all
(add_may_alias): Add argument ALREADY_ADDED. If given,
use it to avoid adding duplicate entries to alias sets.
(replace_may_alias): Remove. Update all users.
(total_alias_vops_cmp): Remove. Update all users.
(group_aliases_into): Remove. Update all users.
(tree_pointer_compare): Remove. Update all users.
(compact_name_tags): Remove. Update all users.
(group_aliases): Remove. Update all users.
(mark_non_addressable): Move from tree-flow-inline.h.
Remove the symbol from the partition holding it, if
(dump_mp_info): New.
(debug_mp_info): New.
(sort_mp_info): New.
(create_partition_for): New.
(rewrite_alias_set_for): New.
(compute_memory_partitions): New.
(compute_may_aliases): Call it.
(init_alias_info): If computing aliases for the first
time, mark every memory symbol for renaming.
(have_common_aliases_p): New.
(compute_flow_insensitive_aliasing): Call it.
(setup_pointers_and_addressables): Do not cache
For register promoted symbols, mark their former
partition for renaming.
(maybe_create_global_var): Only create .GLOBAL_VAR if
there are no call-clobbered variables and a mix of pure
and non-pure functions were found.
(may_alias_p): Tidy comments.
(create_tag_raw): Remove unused variable new_type.
(dump_alias_info): call dump_memory_partitions.
(dump_points_to_info_for): Call dump_decl_set.
(may_be_aliased): Tidy comments and formatting.
* timevar.def (TV_MEMORY_PARTITIONING): Define.
* tree-vectorizer.c (vect_memsyms_to_rename): Rename from
vect_vnames_to_rename. Set DECL_UIDs instead of SSA name
versions in it.
(slpeel_update_phi_nodes_for_guard1): Ignore memory PHIs.
* tree-vect-transform.c (vect_transform_loop): Call
mark_set_for_renaming with vect_memsyms_to_rename.
* tree-flow-inline.h (zero_imm_uses_p): New.
(memory_partition): New.
(set_memory_partition): New.
(factoring_name_p): New.
(symbol_mem_tag): New. Update every function that used
to access the annotation directly.
(set_symbol_mem_tag): Likewise.
* tree-ssa-copy.c (may_propagate_copy): Allow copies
between a partition and a symbol as long as the symbol
belongs to the partition.
(merge_alias_info): Ignore merge requests when memory
partitions are involved.
* tree-ssa.c (verify_ssa_name): Check that default
definitions have empty defining statements.
(verify_use): Remove argument IS_VIRTUAL.
Don't call verify_ssa_name.
(verify_phi_args): Call verify_ssa_name.
(verify_flow_insensitive_alias_info): Handle MPTs.
(verify_flow_sensitive_alias_info): Likewise.
(verify_name_tags): Likewise.
(verify_call_clobbering): Likewise.
(verify_ssa): Check for VOPs only after aliasing
information is available.
Check virtuals and real operands separately.
Call verify_ssa_name on every operand.
(stmt_references_memory_p): Move to tree-ssa-operands.c.
(walk_use_def_chains_1): Guard against NULL PHI
* tree-ssa-operands.c (stmt_references_memory_p): Move from
(get_mpt_for): New.
(dump_memory_partitions): New.
(debug_memory_partitions): New.
* tree-flow.h (struct var_ann_d): Add field mpt.
(struct stmt_ann_d): Add bitfield references_memory.
* (tree-ssa-structalias.o): Include
(tree-ssa-alias.o): Likewise.
* tree-ssa-structalias.c: (update_alias_info): Use
STORED_SYMS to determine which variables are being
written to by the store operation.
* tree-ssa-structalias.h (struct alias_info)
<total_alias_vops>: Remove. Update all users.
<written_vars>: Change to a pointer set. Update all
<dereferenced_ptrs_store>: Likewise.
<dereferenced_ptrs_load>: Likewise.
(NUM_REFERENCES): Remove. Update all users.
(NUM_REFERENCES_CLEAR): Remove. Update all users.
(NUM_REFERENCES_INC): Remove. Update all users.
(NUM_REFERENCES_SET): Remove. Update all users.
* params.def (PARAM_GLOBAL_VAR_THRESHOLD): Remove.
Update all users.
* tree-ssanames.c (make_ssa_name): Initialize
2006-12-11 Aldy Hernandez <>
* tree-ssa-dse.c (aggregate_vardecl_d): New.
(dse_global_data): Add aggregate_vardecl field.
(dse_possible_dead_store_p): New.
Add prev_defvar variable.
Allow immediate uses and previous immediate uses to differ
if they are setting different parts of the whole.
(get_aggregate_vardecl): New.
(dse_record_partial_aggregate_store): New.
(dse_whole_aggregate_clobbered_p): New.
(dse_partial_kill_p): New.
(dse_optimize_stmt): Abstract code checking a possible dead store
into new function dse_possible_dead_store_p().
Call dse_maybe_record_aggregate_store().
When checking whether a STMT and its USE_STMT refer to the
same memory address, check also for partial kills that clobber
the whole.
Move some variable definitions to the block where they are used.
(aggregate_vardecl_hash): New.
(aggregate_vardecl_eq): New.
(aggregate_vardecl_free): New.
(aggregate_whole_store_p): New.
(tree_ssa_dse): Initialize and free aggregate_vardecl.
Mark which aggregate stores we care about.
2006-12-11 Andrew Macleod <>
* tree-ssa-operands.h (struct vuse_element_d): Declare.
(vuse_element_t): Declare.
(struct vuse_vec_d): Declare.
(vuse_vec_p): Declare.
(struct maydef_optype_d) <use_var>: Remove.
<use_ptr>: Remove.
<usev>: Add.
(struct vuse_optype_d) <kill_var>: Remove.
<use_ptr>: Remove.
<usev>: Add.
(struct mustdef_optype_d) <kill_var>: Remove.
<use_ptr>: Remove.
<usev>: Add.
(VUSE_OP_PTR): Add argument. Use VUSE_ELEMENT_PTR.
(VUSE_OP): Add argument. Use VUSE_ELEMENT_PTR.
(VUSE_NUM): Define.
(VUSE_VECT): Define.
(MAYDEF_OP_PTR): Add argument. Use VUSE_OP_PTR.
(MAYDEF_OP): Add argument. Use VUSE_OP.
(MAYDEF_NUM): Define.
(MAYDEF_VECT): Define.
(MUSTDEF_NUM): Define.
(realloc_maydef): Declare.
(realloc_vuse): Declare.
(struct ssa_operand_iterator_d) <vuse_index>: Add.
<mayuse_index>: Add.
(LOADED_SYMS): Define.
(STORED_SYMS): Define.
(FOR_EACH_SSA_MUSTDEF_OPERAND): Call op_iter_next_mustdef.
* tree-into-ssa.c: Adapt for multi-operand V_MAY_DEF and VUSE
* tree-pretty-print.c: Likewise.
* tree-ssa-dse.c: Likewise.
* tree-flow-inline.h: Likewise.
(op_iter_next_mustdef): New.
* tree-ssa-operands.c: Likewise.
Update all users.
(alloc_def): New.
(alloc_use): New.
(alloc_maydef): New.
(alloc_vuse): New.
(alloc_mustdef): New.
(realloc_maydef): New.
(realloc_vuse): New.
2006-12-11 Aldy Hernandez <>
* tree-ssa-operands.c: Remove build_v_must_defs.
(init_ssa_operands): Delete build_v_must_defs.
(finalize_ssa_v_must_def_ops): Remove.
(finalize_ssa_v_must_defs): Remove.
(finalize_ssa_stmt_operands): Do not call
(start_ssa_stmt_operands): Do not check build_v_must_defs.
(append_v_must_def): Delete.
(copy_virtual_operands): Do not copy V_MUST_DEFs.
(get_modify_expr_operands): Remove reference to V_MUST_DEF from
comment. Remove opf_kill_def.
(build_ssa_operands): Remove references to v_must_defs.
(copy_virtual_operands): Same.
(copy_virtual_operands): Same.
(fini_ssa_operands): Same.
(free_ssa_operands): Same.
(add_mustdef_op): Remove.
Remove mustdef_optype_p.
(alloc_mustdef): Remove.
Remove references to V_MUST_DEFs in comment at top of file.
(get_expr_operands): Remove opf_kill_def.
(opf_kill_def): Remove.
(add_virtual_operand): Remove opf_kill_def.
(get_indirect_ref_operands): Same.
(get_tmr_operands): Same.
* tree-vectorizer.c (rename_variables_in_bb): Remove
* tree-ssa-loop-manip.c (find_uses_to_rename_stmt): Remove
(check_loop_closed_ssa_stmt): Same.
* tree-ssa.c (verify_def): Remove V_MUST_DEF from comment.
(verify_use): Same.
(verify_ssa): Remove V_MUST_DEFs traces.
(verify_ssa): Remove SSA_OP_ALL_KILLS.
* tree-into-ssa.c (mark_def_sites): Change SSA_OP_VMUSTDEF to
(rewrite_update_stmt): Remove SSA_OP_VIRTUAL_KILLS.
(rewrite_stmt): Remove SSA_OP_ALL_KILLS.
* tree-ssa-operands.h (struct stmt_operands_d): Remove V_MUST_DEF
(MUSTDEF_OPS): Remove.
(struct mustdef_optype_d): Remove.
Remove mustdef_optype_p.
(struct stmt_operands_d): Remove mustdef_ops.
(ssa_operand_iterator_d): Remove mustdefs and mustkills.
(MUSTDEF_NUM): Remove.
* tree-flow-inline.h (op_iter_init_def): Remove
(delink_stmt_imm_use): Remove SSA_OP_ALL_KILLS.
* tree-ssa-pre.c (compute_rvuse_and_antic_safe): Remove
* tree-ssa-loop-im.c (determine_max_movement): Remove
(gather_mem_refs_stmt): Same.
(gather_mem_refs_stmt): Same.
* tree-ssa-dce.c (mark_really_necessary_kill_operand_phis): Delete.
(perform_tree_ssa_dce): Remove call to
* tree-flow-inline.h (op_iter_init): Remove setting of mustdefs
and mustkills.
(op_iter_next_use): Do not check mustkills.
(op_iter_next_def): Do not check mustdefs.
(op_iter_next_tree): Do not check mustkills or mustdefs.
(clear_and_done_ssa_iter): Do not set mustdefs or mustkills.
(op_iter_next_maymustdef): Do not check mustkills.
(op_iter_init_must_and_may_def): Remove SSA_OP_VMUSTKILL.
(op_iter_init_mustdef): Remove.
* tree-ssa-live.c (create_ssa_var_map): Change SSA_OP_VMUSTDEF to
* tree-ssa-dse.c (dse_optimize_stmt): Remove SSA_OP_VMUSTDEF.
* tree-ssa-ccp.c: Remove V_MUST_DEF traces from comments.
(visit_assignment): Same.
* tree-ssa-copy.c (copy_prop_visit_assignment): Same.
* tree-sra.c (mark_all_v_defs_1): Remove V_MUST_DEF from comment.
* tree-outof-ssa.c (check_replaceable): Remove SSA_OP_VMUSTDEF.
* tree-pretty-print.c (dump_vops): Remove printing of V_MUST_DEF.
Remove kill_p variable.
* tree-dfa.c (struct dfa_stats_d): Remove num_v_must_defs.
(dump_dfa_stats): Remove code related to V_MUST_DEFs.
(collect_dfa_stats_r): Do not set num_v_must_defs.
(mark_new_vars_to_rename): Remove v_must_defs_{before,after}
* tree-into-ssa.c (mark_def_sites): Change SSA_OP_VMUSTKILL to
* tree-ssa-pre.c (compute_rvuse_and_antic_safe): Remove
* tree-ssa-propagate.c (stmt_makes_single_store): Remove
2006-12-11 Zdenek Dvorak <>
PR rtl-optimization/30113
* loop-iv.c (implies_p): Require the mode of the operands to be
2006-12-11 Diego Novillo <>
* tree-ssa-operands.h (create_ssa_artificial_load_stmt):
Rename from create_ssa_artficial_load_stmt. Update all users.
* tree-into-ssa.c (register_new_def): Make static.
* tree.c (is_global_var): Handle SSA_NAMEs.
* tree.h (SSA_NAME_IS_DEFAULT_DEF): Define. Update all users
that used to call gimple_default_def.
* tree-ssa-operands.c (push_stmt_changes): New.
(pop_stmt_changes): New. Update every pass that modifies
statements to bracket modifications with
(discard_stmt_changes): New.
* tree-ssa-dom.c (stmts_to_rescan): Change to stack of
'tree *' instead of 'tree'. Update all users.
* tree-flow-inline.h (zero_imm_uses_p): New.
(symbol_mem_tag): New. Update every function that used
to access the annotation directly.
(set_symbol_mem_tag): Likewise.
* tree-dfa.c (dump_variable): Always show the escape mask.
(mark_symbols_for_renaming): Rename from
mark_new_vars_to_rename. Update all users.
Only mark to rename naked symbols in real and virtual
2006-12-11 Andreas Schwab <>
* varasm.c (elf_record_gcc_switches): Cast second argument of
2006-12-11 Diego Novillo <>
* tree-scalar-evolution.c (scev_const_prop):
* tree-phinodes.c (remove_phi_node): Add argument
RELEASE_LHS_P. If given, release the SSA name on the LHS of
the PHI node.
Update all users.
* tree-ssa-dce.c: Remove forward declarations for static
functions. Re-arrange functions bodies as needed.
(find_obviously_necessary_stmts): Never mark PHI nodes as
obviously necessary.
2006-12-11 Carlos O'Donell <>
* config/arm/elf.h (MAX_OFILE_ALIGNMENT): Remove definition.
2006-12-11 Jan Hubicka <>
* value-prof.c (tree_stringops_transform): New.
(tree_value_profile_transformations): Require count to be non-zero;
call stringop transform; reset stmt BSI after BB changed.
(tree_divmod_fixed_value, tree_mod_pow2): Don't emit unnecesary label.
(interesting_stringop_to_profile_p, tree_stringop_fixed_value): New.
(tree_stringops_values_to_profile): New.
(tree_values_to_profile): Call tree_stringops_values_to_profile.
* tree.h (build_string_literal): Tidy prototype.
(validate_arglist, builtin_memset_read_str, get_pointer_alignment):
* builtins.c (validate_arglist, builtin_memset_read_str,
get_pointer_alignment): Export.
2006-12-11 Uros Bizjak <>
PR target/30120
2006-11-15 Uros Bizjak <>
* config/i386/i386.opt: New target option -mx87regparm.
* config/i386/i386.h (struct ix86_args): Add x87_nregs, x87_regno,
float_in_x87: Add new variables. mmx_words, sse_words: Remove.
(X87_REGPARM_MAX): Define.
* config/i386/i386.c (override_options): Error out for
-mx87regparm but no 80387 support.
(ix86_attribute_table): Add x87regparm.
(ix86_handle_cconv_attribute): Update comments for x87regparm.
(ix86_comp_type_attributes): Check for mismatched x87regparm types.
(ix86_function_x87regparm): New function.
(ix86_function_arg_regno_p): Add X87_REGPARM_MAX 80387 floating
point registers.
(init_cumulative_args): Initialize x87_nregs and float_in_x87
(function_arg_advance): Process x87_nregs and x87_regno when
floating point argument is to be passed in 80387 register.
(function_arg): Pass XFmode arguments in 80387 registers for local
functions. Pass SFmode and DFmode arguments to local functions
in 80387 registers when flag_unsafe_math_optimizations is set.
* reg-stack.c (convert_regs_entry): Disable NaN load for
stack registers that are used for argument passing.
* doc/extend.texi: Document x87regparm function attribute.
* doc/invoke.texi: Document -mx87regparm.
2006-12-11 Jan Hubicka <>
Move all varpool routines out of cgraph/cgraphunit to varpool.c
* cgraph.c: Update comments.
cgraph_varpool_nodes, cgraph_varpool_last_needed_node
cgraph_varpool_node_name, cgraph_varpool_node,
cgraph_varpol_mode_for_asm, cgraph_varpool_mark_needed_node,
cgraph_variable_initializer_availability): Move to
varpool.c and drop cgraph_ prefixes.
(cgraph_varpool_enqueue_needed_node, cgraph_varpool_reset_queue,
cgraph_varpool_first_unanalyzed_node, cgraph_varpool_finalize_decl):
move to varpool.c; drop cgraph_ prefix; make static.
(dump_cgraph_varpool_node): Move to varpool.c under name
(dump_varpool, hash_varpool_node, eq_varpool_node,
decide_is_variable_needed): Move to varpool.c
(decl_assembler_name_equal): Move to tree.c.
(availability_names): Rename to ...
(cgraph_availability_names): ... this one.
(dump_cgraph_node): Update.
* cgraph.h: Reorder declarations now in varpool.c
(cgraph_vailablity_names): Declare.
(struct cgraph_varpool_node): Rename to ...
(struct varpool_node): ... this one.
(cgraph_varpool_first_unanalyzed_node, cgraph_varpool_nodes_queue,
cgraph_varpool_first_unanalyzed_node, cgraph_varpool_node,
cgraph_varpool_node_for_asm, cgraph_varpool_mark_needed_node,
cgraph_varpool_finalize_decl, cgraph_varpool_enqueue_needed_node,
cgraph_varpool_reset_queue, cgraph_varpool_assemble_pending_decls,
cgraph_variable_initializer_availability): Rename to ...
(varpool_first_unanalyzed_node, varpool_nodes_queue,
varpool_first_unanalyzed_node, varpool_node,
varpool_node_for_asm, varpool_mark_needed_node,
varpool_finalize_decl, varpool_enqueue_needed_node,
varpool_assemble_pending_decls, variable_initializer_availability):
Rename to ...
* tree.c (decl_assembler_name_equal): Move here from cgraph.c.
* tree.h (decl_assembler_name_equal): Declare.
* omp-low.c (lower_omp_critical): Update.
* ipa-reference (analyze_variable, static_execute): Likewise.
* toplev.c (wrapup_global_declaration_2, compile_file): Update.
* cgraphunit.c: Update comments.
(cgraph_varpool_assembled_nodes_queue): Move to varpool.c under name
(cgraph_varpool_analyze_pending_decls): Move to varpool.c under name
(cgraph_varpool_remove_unreferenced_decls): Move to varpool.c under name
(record_reference): Update.
(cgraph_create_edges): Update.
(record_referneces_in_initializer): New function.
(cgraph_varpool_assemble_decl): Move to varpool.c under name
varpool_assemble_decl; make global.
(cgraph_varpool_assemble_pending_decls): Move to varpool.c under name
(process_function_and_variable_attributes, cgraph_finalize_compilation_unit,
struct cgraph_order_sort, cgraph_output_in_order,
cgraph_function_and_variable_invisibility, cgraph_optimize,
cgraph_increase_alignment): Update.
* dwarf2out.c (decls_for_scope): Likewise.
* ipa-type-escape.c (analyze_variable, type_escape_execute): Likewise.
* except.c (output_ttype): Likewise.
* varasm.c (mark_decl_referenced): Likewise.
(find_decl_and_mark_referenced, assemble_alias): update.
* Add varpool.c, gt-varpool.c and remove gt-cgraphunit.c
* passes.c (rest_of_decl_compilation): Update.
2006-12-11 Ira Rosen <>
* tree-vect-patterns.c (vect_recog_dot_prod_pattern): Use
* tree-vect-transform.c (vect_permute_store_chain): Likewise.
(vect_setup_realignment): Likewise.
2006-12-11 Sa Liu <>
Ben Elliston <>
* config/spu/spu-elf.h (STARTFILE_SPEC): Update.
(ENDFILE_SPEC): Likewise.
* config/spu/spu.opt (mstdmain): New option.
* config/spu/crti.asm: Remove.
* config/spu/crtn.asm: Likewise.
* config/spu/crt0.c: Likewise.
* config/spu/crtend.c: Likewise.
* config/spu/t-spu-elf (EXTRA_MULTILIB_PARTS): Remove crt0 files
listed above.
($(T)crti.o, $(T)crtn.o, $(T)crt1.o, $(T)crtend1.o): Remove.
* doc/invoke.texi (SPU Options): Document -mstdmain.
2006-12-10 Zdenek Dvorak <>
* doc/loop.texi: Document number_of_latch_executions and
* tree-scalar-evolution.c (compute_overall_effect_of_inner_loop,
chrec_is_positive, number_of_iterations_for_all_loops,
scev_const_prop): Use number_of_latch_executions.
(set_nb_iterations_in_loop): Do not increase the value of the
number of iterations.
(number_of_iterations_in_loop): Renamed to ...
(number_of_latch_executions): ... this.
(number_of_exit_cond_executions): New function.
* tree-scalar-evolution.h (number_of_iterations_in_loop): Declaration
(number_of_latch_executions, number_of_exit_cond_executions): Declare.
* tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables): Use
* tree-data-ref.c (get_number_of_iters_for_loop): Use
* tree-vect-analyze.c (vect_get_loop_niters): Ditto.
* cfgloop.h (struct loop): Improve description of the nb_iterations
2006-12-10 Daniel Berlin <>
* tree-ssa-alias.c (compact_name_tags): Use sort_tags_by_id.
(tree_pointer_compare): Remove.
2006-12-10 Zdenek Dvorak <>
* tree-vrp.c (adjust_range_with_scev): Use get_chrec_loop.
* loop-unswitch.c (unswitch_loops): Use FOR_EACH_LOOP.
* tree-loop-linear.c (linear_transform_loops): Ditto.
* tree-ssa-loop-im.c (determine_lsm): Ditto.
* tree-ssa-loop-niter.c (estimate_numbers_of_iterations,
free_numbers_of_iterations_estimates): Ditto.
* tree_ssa_unswitch_loops (tree_ssa_unswitch_loops): Ditto.
* tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
* tree-ssa-loop-ivopts.c (tree_ssa_iv_optimize): Ditto.
* modulo-sched.c (sms_schedule): Ditto.
* tree-ssa-loop-ivcanon.c (canonicalize_induction_variables,
tree_unroll_loops_completely): Ditto.
* predict.c (predict_loops): Ditto.
* tree-if-conv.c (main_tree_if_conversion): Ditto.
* loop-unroll.c (unroll_and_peel_loops, peel_loops_completely,
decide_unrolling_and_peeling): Ditto.
* cfgloopmanip.c (unloop): Use delete_loop.
(place_new_loop): Access larray vector instead of parray.
(create_preheaders, force_single_succ_latches,
fix_loop_structure): Use FOR_EACH_LOOP and delete_loop..
* loop-doloop.c (doloop_optimize_loops): Ditto.
* loop-invariant.c (move_loop_invariants): Ditto.
* tree-cfg.c (replace_uses_by): Ditto.
* tree-ssa-loop-prefetch.c (tree_ssa_prefetch_arrays): Ditto.
Moved to ...
... here.
* tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop,
compute_overall_effect_of_inner_loop, chrec_is_positive): Use
get_loop and get_chrec_loop.
(number_of_iterations_for_all_loops): Use number_of_loops.
(scev_initialize, scev_reset, scev_const_prop): Use FOR_EACH_LOOP.
* tree-scalar-evolution.h (get_chrec_loop): New inline function.
* cfgloopanal.c (mark_irreducible_loops): Use number_of_loops,
* tree-chrec.c (evolution_function_is_invariant_rec_p,
chrec_convert_1): Use get_loop and get_chrec_loop.
* loop-init.c (loop_optimizer_init): Use number_of_loops.
(loop_optimizer_init): Use FOR_EACH_LOOP.
* tree-vectorizer.c (vect_loops_num): Removed.
(vectorize_loops): Store number of loops locally. Use
FOR_EACH_LOOP and get_loop.
* tree-vectorizer.h (vect_loops_num): Removed.
* tree-data-ref.c (get_number_of_iters_for_loop): Use get_loop.
(find_data_references_in_loop): Do not set parallel_p.
* tree-data-ref.h: Do not declare VEC(loop_p).
* cfgloop.c (flow_loops_dump, mark_single_exit_loops,
verify_loop_structure): Use FOR_EACH_LOOP.
(flow_loops_free): Use FOR_EACH_LOOP, free larray vector.
(initialize_loops_parallel_p): Removed.
(flow_loops_find): Push the loops into a vector.
(delete_loop): New function.
(cancel_loop): Use delete_loop.
* cfgloop.h: Declare VEC(loop_p).
(struct loop): Remove parallel_p field.
(struct loops): Replace num and parray field by larray vector.
Remove shared_headers field.
(delete_loop): Declare.
(get_loop, get_loops, number_of_loops, fel_next, fel_init,
* doc/loop.tex: Document new accessor functions.
2006-12-10 Andrew MacLeod <>
* common.opt (-ftree-lrs): Remove live range splitting option.
* Add tree-ssa-coalesce.o and reduce header dependancies.
* opts.c (decode_options): Remove flag_tree_live_range_split.
* tree-flow.h (struct var_ann_d): Rename fields from root_ to base_.
* tree-flow-inline.h (single_imm_use_p): New. Check for single use.
* tree-outof-ssa.c: Remove header files which aren't needed.
(SSANORM_*): Remove flags.
(print_exprs_edge, coalesce_abnormal_edges, coalesce_phi_operands,
coalesce_result_decls_and_copies, coalesce_asm_operands): Remove.
(coalesce_ssa_name): Move to tree-ssa-coalesce.c.
(assign_vars): Use Basevar instead of root_var structure.
(replace_def_variable): Dont do anything if def is replaceable.
(remove_ssa_form): Integrate functional changes.
(rewrite_out_of_ssa): Remove live-range_split option.
* tree-ssa-coalesce.c: New File for ssa-name coalescing.
(coalesce_cost): Calculate the cost of a coalesce.
(coalesce_cost_bb): Calculate the coalesce cost within a BB.
(coalesce_cost_edge): Calculate the coalesce cost on an edge.
(pop_cost_one_pair): Remove the best coalesce with cost 1 from the list.
(pop_best_coalesce): Remove the best coalesce from the list.
(coalesce_pair_map_hash): Calculate coalesce pair hash.
(coalesce_pair_map_eq): Compare 2 coalesce pairs for hash function.
(create_coalesce_list): Create a coalesce list object.
(delete_coalesce_list): Free a coalesce list object.
(find_coalesce_pair): Find matching pair in the coalesce list.
(add_cost_one_coalesce): Add a coalesce to the "cost one" list.
(add_coalesce): Add a coalesce to the coalesce list.
(compare_pairs): Comparision function to determine pair sorted order.
(num_coalesce_pairs): Number of coalesced pairs.
(first_coalesce_pair, end_coalesce_pair_p, next_coalesce_pair):
Coalesce pair iterator functions.
(sort_coalesce_list): Sort coalesce pairs in order of expense.
(dump_coalesce_list): Show coalesce list.
(ssa_conflicts_new): Create an SSA conflict graph.
(ssa_conflicts_delete): Delete an SSA conflict graph.
(ssa_conflicts_test_p): Test for conflicts.
(ssa_conflicts_add_one): Add a single conflict.
(ssa_conflicts_add): Add a conflict pair.
(ssa_conflicts_merge): Merge conflicts.
(struct live_track_d): Struct for tracking live partitions.
(new_live_track): Create new live_track object.
(delete_live_track): Delete a live_track object.
(live_track_remove_partition): Remove a partition from the live list.
(live_track_add_partition): Add a partition from the live list.
(live_track_clear_var): Take VAR from the live list.
(live_track_live_p): Is var live?
(live_track_process_use): Make var come alive.
(live_track_process_def): Make var go dead, add conflicts.
(live_track_init): Initialize to a live on exit set.
(live_track_clear_base_vars): Clear live partitions.
(build_ssa_conflict_graph): Build a conflict graph.
(print_exprs): Common debug output routine.
(abnormal_corrupt): Output info about a failed coalesce across an
abnormal edge.
(fail_abnormal_edge_coalesce): Output info about a failed MUST_COALESCE.
(create_outofssa_var_map): Create a var map and coalesce list.
(attempt_coalesce): Coalesce a pair.
(coalesce_partitions): Coalesce all pairs in a coalesce list.
(coalesce_ssa_name): Entry point. Determine what ssa_names to coalesce.
* tree-ssa-live.c: Remove header files which aren't needed.
(var_map_base_init): New. Initialize a basevar list.
(var_map_base_fini): New. Finish a basevar list.
(init_var_map): Initialize new fields.
(delete_var_map): Free new fields.
(var_union): Use renamed fields.
(compact_var_map): Remove.
(partition_to_view_init): Use renamed fields, change order of an if.
(partition_view_fini): Use renamed fields.
(partition_view_normal): Create basevar list if requested.
(partition_view_bitmap): Create a view based on a bitmap of partitions.
(change_partition_var): Use renamed fields.
(create_ssa_var_map): Remove.
(tpa_init, tpa_remove_partition, tpa_delete, tpa_compact,
root_var_init): Remove.
(partition_pair_map_hash, partition_pair_map_eq, create_coalesce_list,
delete_coalesce_list, find_partition_pair, coalesce_cost, add_coalesce,
compare_pairs, num_coalesce_pairs, first_partition_pair,
end_partition_pair_p, next_partition_pair, sort_coalesce_list,
pop_best_coalesce, add_conflicts_if_valid, set_if_valid,
build_tree_conflict_graph, coalesce_tpa_members, dump_coalesce_list,
tpa_dump): Moved to tree-ssa-coalesce.c and/or renamed there.
(dump_var_map): Use renamed fields.
* tree-ssa-live.h (struct _var_map): Modify fields.
(partition_to_var, version_to_var, var_to_partition): Use renamed
(basevar_index): New. Index of the base variable of a partition.
(num_basevars): New. Number of unique base variables in partition map.
(register_ssa_partition): Use renamed fields.
(struct tree_partition_associator_d): Remove.
(tpa_num_trees, tpa_tree, tpa_first_partition, tpa_next_partition,
tpa_find_tree, tpa_decompact, root_var_init, root_var_num,
root_var, root_var_first_partition, root_var_next_partition,
root_var_dump, root_var_delete, root_var_remove_partition,
root_var_find, root_var_compact, root_var_decompact): Remove.
(struct partition_pair, struct coalesce_list_d): Moved to
* tree-ssa-ter.c: Remove header files which aren't needed.
2006-12-10 Steven Bosscher <>
* cse.c: (struct cse_basic_block_data): Remove LAST field.
(struct branch_path): Remove BRANCH and TAKEN fields. Add new
BB field.
(cse_visited_basic_blocks): New static bitmap.
(cse_end_of_basic_block, cse_basic_block): Remove.
(cse_find_path, cse_dump_path, cse_prescan_path,
cse_extended_basic_block): New static functions.
(cse_insn): Don't CSE over setjmp calls. Use the CFG to find
basic block boundaries. Don't record jump equivalences here.
Update the CFG after doing in-place replacement of the SET_SRC.
(cse_main): Rewrite. Look for extended basic block headers
and call cse_extended_basic_block on them until all paths that
start at this header are exhausted.
(rest_of_handle_cse): Verify that the CFG is incrementally updated
and correct after cse_main.
Don't call delete_trivially_dead_insns, let cfgcleanup do that.
(rest_of_handle_cse2): Verify the CFG here, too, after cse_main.
(pass_cse): Add TODO_verify_flow.
(pass_cse2): Likewise.
2006-12-10 Rask Ingemann Lambertsen <>
* reload1.c (choose_reload_regs): Don't set byte offset when
resolving subregs of hard regs.
2006-12-09 Zack Weinberg <>
* c-opts.c (c_common_parse_file): Unconditionally give a warning,
suitable for the language, if set_yydebug is true.
* c-pragma.h: Define enum pragma_omp_clause here. Don't define
YYDEBUG or declare yydebug.
* c-parser.c (yydebug, enum pragma_omp_clause): Delete.
2006-12-09 Jan Hubicka <>
* cgraph.c: Update copyright.
* cgraph.h: Likewise
(cgraph_update_pending_function): Remove prototype.
* cgraphunit.c: Update copyright; update overall comment.
(cgraph_assemble_pending_functions): Make local.
2006-12-09 Maxim Kuvyrkov <>
* haifa-sched.c (schedule_block): Remove excessive sanity check.
2006-12-08 Trevor Smigiel <>
* config/spu/spu-protos.h (spu_split_immediate): Renamed from
(cpat_const_p, gen_cpat_const): Add.
* config/spu/spu.c (immediate_class): New enum.
(cpat_info, classify_immediate): New.
(print_operand): Use S, D, T instead of F, G, H. Use
classify_immediate. Handle cpat cases.
(spu_split_immediate): Renamed from spu_split_address. Split all
immediates that can be split.
(immediate_load_p): Use classify_immediate.
(spu_legitimate_constant_p): Accept everything except some cases of
(spu_expand_move): Use spu_split_immedate.
(fsmbi_const_p): Use classify_immediate.
(cpat_const_p): New.
(gen_cpat_const: New.
* config/spu/ (j,k,l): New constraints for cpat
* config/spu/ (unnamed splitter): Change address splitter to
handle all immediates.
(_mov<mode>, _movdi, _movti): Handle i, j, k constraints for cpat
(cpat, _cpat, splitter): Generate a TImode constant for cpat patterns
when possible.
2006-12-08 John David Anglin <>
PR target/30039
* (high:DI and lo_sum:DI): Handle 64-bit CONST_INTs in 32-bit
patterns. Correct length of high:DI instruction sequence.
2006-12-08 Mike Stump <>
* config/rs6000/t-darwin (TARGET_LIBGCC2_CFLAGS): Build
libgcc with -mmacosx-version-min=10.4.
* config/rs6000/darwin.h (SUBTARGET_OVERRIDE_OPTIONS): Default to
G4 for 10.5+ unless doing kernel builds.
2006-12-08 Uros Bizjak <>
PR target/30120
* reg-stack.c (convert_regs_entry): Mark current argument passing
registers as live.
* config/i386/i386.h (X87_REGPARM_MAX): Set to 0 to disable passing
of float arguments in x87 registers.
2006-12-08 John David Anglin <>
* pa.h (LEGITIMATE_CONSTANT_P): Simplify.
2006-12-08 Mark Shinwell <>
* recog.c (mode_dependent_address_p): Identify pre-increment,
pre-decrement, post-increment and post-decrement addressing as always
being mode-dependent.
* config/m32c/m32c.c (m32c_mode_dependent_address): Delete.
* config/m32c/m32c.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
* config/m32c/m32c-protos.h (m32c_mode_dependent_address): Delete.
* config/m32r/m32r.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete PRE_DEC,
PRE_INC and POST_INC checks.
* config/i386/i386.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
* config/sh/sh.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
* config/pdp11/pdp11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
* config/avr/avr.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
* config/c4x/c4x.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete PRE_DEC,
* config/stormy16/stormy16.c (xstormy16_mode_dependent_address_p):
Delete POST_INC and PRE_DEC cases.
* config/m68hc11/m68hc11.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to
* config/cris/cris.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
* config/mn10300/mn10300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to
* config/ia64/ia64.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
* config/m68k/m68k.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
* config/rs6000/rs6000.c (rs6000_mode_dependent_address): Delete
PRE_INC and PRE_DEC cases.
* config/arc/arc.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
* config/mcore/mcore.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
* config/arm/arm.h (ARM_GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
* config/pa/pa.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
* config/vax/vax.c (vax_mode_dependent_address_p): Delete
auto-increment cases.
* config/h8300/h8300.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete
auto-increment cases.
* config/bfin/bfin.h (GO_IF_MODE_DEPENDENT_ADDRESS): Change to no-op.
2006-12-08 Andrew MacLeod <>
* Add new file tree-ssa-ter.c.
* tree-outof-ssa.c (struct temp_expr_table_d, new_temp_expr_table,
free_temp_expr_table, add_value_to_version_list,
add_value_to_partition_list, remove_value_from_partition_list,
add_dependence, check_replaceable, finish_expr, mark_replaceable,
kill_expr, kill_virtual_exprs, find_replaceable_in_bb,
find_replaceable_exprs, dump_replaceable_exprs): Move to tree-ssa-ter.c.
* tree-ssa-live.h (find_replaceable_exprs, dump_replaceable_exprs): Add
* tree-ssa-ter.c: New file using code moved from tree-outof-ssa.c.
(struct value_expr_d): Remove.
(struct temp_expr_table_d): Rename fields, add explicit vector of
replaceable expressions instead of sharing. Change value_expr_p's to
bitmap. Delete free_list.
(new_temp_expr_table): Rename fields, count number of ssa_names in
each partition.
(free_temp_expr_table): Rename field, free new fields.
(new_value_expr, free_value_expr, find_value_in_list, add_value_to_list,
add_info_to_list, remove_value_from_list): Delete.
(version_to_be_replaced_p): New. Is an ssa-name replaceable?
(make_dependent_on_partition): New. Set bit in version list, allocating
a bitmap if need be.
(add_to_partition_kill_list): New. Set bit in the partition list,
allocating a bitmap if need be.
(remove_from_partition_kill_list): New. Remove a bit from the
partition list, free the bitmap if it is empty.
(add_dependence): Use renamed field, cleanup. Don't add a dependence
on partitions with only one member.
(is_replaceable_p): New. Split out replaceability check from
(process_replaceable): New. Code split from check_replaceable.
(check_replaceable): Removed.
(finished_with_expr): Renamed from finish_expr.
(kill_expr): Use renamed fields and less parameters.
(kill_virtual_exprs): Less parameters.
(mark_replaceable): Use renamed fields.
(find_replaceable_in_bb): Use renamed fields, cleanup.
(find_replaceable_exprs): Use renamed routines, cleanup.
(dump_replaceable_exprs): Don't go past end of ssa_names list.
(debug_ter): New. Debug routine to dump state.
2006-12-08 Bernd Schmidt <>
* config/bfin/bfin.c (effective_address_32bit_p): Return true for
anything involving the GOT.
(bfin_adjust_cost): Don't take the REGNO of a MEM.
(trapping_loads_p): Look inside the pattern of an insn to find the
* config/bfin/ (attr "type"): Add movcc.
(insn_reservation "alu"): Likewise.
(movsicc_insn1, movsicc_insn2): Change type to movcc.
2006-12-07 Andrew Pinski <>
* config/spu/spu-c.c (spu_build_overload_builtin): Delete.
(spu_resolve_overloaded_builtin): Check for non scalar instead
of vector type and check the function call argument type also for
non scalar.
Call build_function_call instead of spu_build_overload_builtin.
2006-12-07 Trevor Smigiel <>
* config/spu/spu.c (array_to_constant): Correct the order of arguments
to the calls of hwint_to_const_double.
2006-12-07 Nick Clifton <>
* config/elfos.h (TARGET_ASM_RECORD_GCC_SWITCHES): Set to
2006-12-07 Andrew Macleod <>
* expr.c (string_constant): Account for non-zero lower bound arrays.
2006-12-07 Richard Guenther <>
* builtins.c (expand_builtin_pow): Adjust predicates for
pow to cbrt expansion to unsafe math and !HONOR_NANS for
negative base.
2006-12-07 Jan Hubicka <>
* i386.c (nocona_cost, pentium4_cost): Update preffered memcpy/memset
2006-12-07 Jan Hubicka <>
* tree-vrp.c (compare_values): Short circuit INTEGER_CST;
use fold_constant_to_binary; tolerate wrong type constants.
(value_intersect_p): Do just two tests.
2006-12-07 Bernd Schmidt <>
* config/bfin/bfin.c (print_operand): New modifier 'N' for constants.
* config/bfin/ (ssashiftv2hi3, ssashifthi3, lshiftv2hi3,
lshifthi3): Use it, and fix the order of alternatives.
2006-12-07 Nick Clifton <>
* common.opt (record-gcc-switches): New command line switch.
* target.h (print_switch_type): New enum.
(print_switch_fn_type): New typedef for a function pointer.
(struct gcc_target): Add record_gcc_switches and
record_gcc_switches_section fields.
* target-def.h (TARGET_ASM_RECORD_GCC_SWITCHES): Provide a
default definition.
* toplev.c (print_single_switch): Simplify by providing a
pointer to function that will format and output the switch
(print_switch_values): Likewise.
(print_to_asm_out_file): New function.
(print_to_stderr): New function.
(init_asm_output): If flag_record_gcc_switches is set then if
the target supports recording the switches then emit them into
the assembler output file, otherwise tell the user that the
switch is not supported.
* varasm.c (eld_record_gcc_switches): New function. Example
handler for the record_gcc_switches target hook.
* doc/tm.texi (TARGET_ASM_RECORD_GCC_SWITCHES): Document the new
target hook.
* doc/invoke.texi (-frecord-gcc-switches): Document.
2006-12-07 Maxim Kuvyrkov <>
PR target/29794
* sched-rgn.c (add_block1): Use correct initializer.
2006-12-07 Richard Guenther <>
* tree-vect-transform.c (vectorizable_call): Fix leftover of
2006-12-06 Aldy Hernandez <>
* config/pa/pa.c (hppa_gimplify_va_arg_expr): Build MODIFY_EXPR
2006-12-06 Jan Hubicka <>
* tree-vrp.c (operand_less_p): New.
(compare_values, value_inside_range): Rewrite in terms of
2006-12-06 Uros Bizjak <>
* config/i386/ (DIRFLAG_REG): Remove constant.
(type): Remove cld.
(length_immediate): Do not depend on cld type attribute.
(length_address): Ditto.
(modrm): Ditto.
(memory): Ditto.
(cld): Remove insn pattern.
(strmov_singleop): Do not use DIRFLAG_REG.
(*strmovdi_rex_1): Ditto.
(*strmovsi_1): Ditto.
(*strmovsi_rex_1): Ditto.
(*strmovhi_1): Ditto.
(*strmovhi_rex_1): Ditto.
(*strmovqi_1): Ditto.
(*strmovqi_rex_1): Ditto.
(rep_mov): Ditto.
(*rep_movdi_rex64): Ditto.
(*rep_movsi): Ditto.
(*rep_movsi_rex64): Ditto.
(*rep_movqi): Ditto.
(*rep_movqi_rex64): Ditto.
(strset_singleop): Ditto.
(*strsetdi_rex_1): Ditto.
(*strsetsi_1): Ditto.
(*strsetsi_rex_1): Ditto.
(*strsethi_1): Ditto.
(*strsethi_rex_1): Ditto.
(*strsetqi_1): Ditto.
(*strsetqi_rex_1): Ditto.
(rep_stos): Ditto.
(*rep_stosdi_rex64): Ditto.
(*rep_stossi): Ditto.
(*rep_stossi_rex64): Ditto.
(*rep_stosqi): Ditto.
(*rep_stosqi_rex64): Ditto.
(cmpstrnsi): Do not generate cld insn.
(cmpstrnqi_nz_1): Do not use DIRFLAG_REG.
(*cmpstrnqi_nz_1): Ditto.
(*cmpstrnqi_nz_rex_1): Ditto.
(cmpstrnqi_1): Ditto.
(*cmpstrnqi_1): Ditto.
(*cmpstrnqi_rex_1): Ditto.
(strlenqi_1): Ditto.
(*strlenqi_1): Ditto.
(*strlenqi_rex_1): Ditto.
* config/i386/ (shift): Do not depend on cld type attribute.
* config/i386/ (pent_cld): Remove insn reservation.
* config/i386/ (athlon_decode): Do not depend on cld
type attribute.
* config/i386/ (ppro_cld): Remove insn reservation.
* config/i386/ (k6_alux_only): Do not depend on cld type
(k6_alux_only_load): Ditto.
(k6_alux_only_store): Ditto.
* config/i386/i386.c (ix86_expand_movmem): Remove cld_done boolean.
Do not emit cld instruction.
(ix86_expand_setmem): Ditto.
(ix86_expand_strlen): Do not emit cld instruction.
2006-12-06 Bernd Schmidt <>
* config/bfin/bfin.c (bfin_rtx_costs): Add a number of new cases, tweak
old ones.
2006-12-06 Diego Novillo <>
* Set complaints to 0.
2006-12-06 Jan Hubicka <>
* bitmap.h: Include statistics.h
(struct bitmap_head_def): Add variant with pointer to bitmap descriptor.
(bitmap_initialize_stat): Rename from bitmap_initialize; add statistics.
(bitmap_obstack_alloc_stat, bitmap_gc_alloc_stat): Declare.
* bitmap.c: Include hashtab.h
(bitmap_descriptor): New.
(bitmap_hash): New static variable
(hash_descriptor, eq_descriptor, bitmap_descriptor, register_overhead):
New static functions.
(bitmap_register): New.
(bitmap_element_free, bitmap_element_allocate, bitmap_elt_clear_from,
bitmap_obstack_release): Do accounting.
(bitmap_obstack_alloc_stat): Rename from bitmap_obstack_alloc ; do
(bitmap_gc_alloc_stat): Likewise.
(bitmap_obstack_free, bitmap_find_bit): Do statictics.
(print_statistics, dump_bitmap_statistics): New functions.
* toplev.c (finalize): Dump bitmap statistics.
2006-12-06 Bernd Schmidt <>
* reload1.c (delete_output_reload): Count occurrences in
* rtlanal.c (count_occurrences): Handle EXPR_LIST nodes without
crashing at the end of the list.
2006-12-05 Daniel Berlin <>
* tree-ssa-structalias.c (set_used_smts): Re-fix pr29156.
Optimize to avoid marking more SMT's as used when they aren't.
2006-12-05 Eric Christopher <>
* config/i386/i386.c (x86_output_aligned_bss): Move out
of COMMON_ASM_OP ifdef.
2006-12-05 Eric Christopher <>
* config/darwin.h (DARWIN_EXTRA_SPECS): New.
* config/i386/darwin64.h (SUBTARGET_EXTRA_SPECS): Use
* config/i386/darwin.h: Ditto.
* config/rs6000/darwin.h: Ditto.
2006-12-05 Daniel Berlin <>
* tree-vrp.c (pass_vrp): Remove PROP_smt_usage.
* tree-complex.c (pass_lower_complex): Ditto.
* tree-ssa-ccp.c (pass_ccp): Ditto.
(pass_store_ccp): Ditto.
* tree-ssa-dom.c (pass_dominator): Ditto.
(pass_phi_only_cprop): Ditto.
* tree-sra.c (pass_sra): Ditto.
* tree-ssa-forwprop.c (pass_forwprop): Ditto.
* tree-flow.h (updating_used_alone): Remove.
(updating_used_alone): Ditto.
* tree-ssa-alias.c (updating_used_alone): Remove variable.
(lhs_may_store_to): Remove function.
(recalculate_used_alone): Ditto.
(compute_may_aliases): Remove used_alone calculation.
* tree.h (struct tree_memory_tag): Remove is_used_alone and
old_used_alone. Remove SMT_USED_ALONE and SMT_OLD_USED_ALONE.
* tree-pass.h (PROP_smt_usage): Remove.
* passes.c (execute_todo): Remove used alone recalculation.
(execute_one_pass): Ditto.
* tree-ssa-operands.c (add_virtual_operand): Remove used_alone
2006-12-05 Brooks Moses <>
* doc/include/texinfo.tex: Update to version 2006-11-08.17.
2006-12-05 Zdenek Dvorak <>
PR tree-optimization/14784
* tree-ssa-operands.c (access_can_touch_variable): Unrevert the fix.
2006-12-05 Aldy Hernandez <>
Merge from gimple-tuples-branch.
2006-12-04 Aldy Hernandez <>
* config/s390/s390.c (s390_va_start): Replace MODIFY_EXPR with
(s390_gimplify_va_arg): Same.
* config/sparc/sparc.c (sparc_gimplify_va_arg): Same.
* config/sh/sh.c (sh_va_start): Same.
(sh_gimplify_va_arg_expr): Same.
* config/xtensa/xtensa.c (xtensa_va_start): Same.
(xtensa_gimplify_va_arg_expr): Same.
* config/ia64/ia64.c (ia64_gimplify_va_arg): Same.
* config/pa/pa.c (hppa_gimplify_va_arg_expr): Same.
* config/mips/mips.c (mips_va_start): Same.
(mips_gimplify_va_arg_expr): Same.
2006-12-04 Aldy Hernandez <>
* Merge from mainline at revision 119445.
2006-12-04 Aldy Hernandez <>
* config/spu/spu.c (spu_va_start): Change MODIFY_EXPR to
(spu_gimplify_va_arg_expr): Same.
2006-12-04 Aldy Hernandez <>
* config/stormy16/stormy16.c (xstormy16_expand_builtin_va_start):
(xstormy16_expand_builtin_va_arg): Same.
2006-12-04 Aldy Hernandez <>
* config/frv/frv.c (frv_expand_builtin_va_start): Change MODIFY_EXPR
2006-12-04 Aldy Hernandez <>
* config/alpha/alpha.c (va_list_skip_additions): Change all
(alpha_va_start): Same.
(alpha_gimplify_va_arg_1): Same.
(alpha_gimplify_va_arg): Same.
2006-12-01 Aldy Hernandez <>
* gimplify.c (gimplify_modify_expr): Remove FIXME comment.
2006-12-01 Aldy Hernandez <>
* tree-ssa-loop-im.c: Rename all PROTECTED_TREE_OPERAND to
* tree-complex.c: Same.
* tree-pretty-print.c: Same.
* tree.c: Same.
* tree.h: Same.
* builtins.c: Same.
* fold-const.c: Same.
* tree-ssa-dom.c: Same.
* tree-ssa-propagate.c: Same.
* tree-ssa-alias.c: Same.
* gimple-low.c: Same.
* dwarf2out.c: Same.
* c-pretty-print.c: Same.
* gimplify.c: Same.
* tree-inline.c: Same.
* tree-outof-ssa.c: Same.
* tree-ssa-structalias.c: Same.
* tree-ssa-reassoc.c: Same.
* stmt.c: Same.
2006-11-16 Aldy Hernandez <>
* tree.c (build2_stat): Fix comment.
2006-11-13 Aldy Hernandez <>
* tree-ssa-propagate.c (get_rhs): Use GIMPLE_MODIFY_STMT and
TREE_OPERAND when appropriate.
2006-11-04 Aldy Hernandez <>
* java/java-tree.h (lang_tree_node): Handle gimple tuples.
(EXPR_WFL_EMIT_LINE_NOTE): Look inside base.
(EXPR_WFL_LINECOL): Use EXPR_LOCUS macro instead of
* java/java-gimplify.c (java_gimplify_expr): Comment on why we do
not handle GIMPLE_MODIFY_STMT in the switch statement.
(java_gimplify_modify_expr): Call build2 with GIMPLE_MODIFY_STMT.
(java_gimplify_new_array_init): Same.
2006-11-03 Aldy Hernandez <>
* gimplify.c (gimplify_omp_for): Allow gimple statements.
* tree-outof-ssa.c (check_replaceable): Use PROTECTED_TREE_OPERAND.
* fold-const.c (fold_binary): Allow gimple statements.
(fold): Same.
* fortran/trans-array.c (gfc_conv_descriptor_data_set_internal):
Rename from gfc_conv_descriptor_data_set.
Call gfc_add_modify instead of gfc_add_modify_expr.
* fortran/trans-array.h (gfc_conv_descriptor_data_set_internal):
Rename from gfc_conv_descriptor_data_set.
(gfc_conv_descriptor_data_set): New macro.
(gfc_conv_descriptor_data_set_tuples): New macros.
* fortran/trans-openmp.c (gfc_omp_clause_default_ctor): Call
* fortran/trans.c (gfc_add_modify): Rename from gfc_add_modify_expr.
Generate GIMPLE_MODIFY_STMT when appropriate.
* fortran/trans.h (gfc_add_modify): Rename from gfc_add_modify_expr.
(gfc_add_modify_expr): New macro.
(gfc_add_modify_stmt): New macro.
* fortran/f95-lang.c (lang_tree_node): Handle gimple statements.
2006-11-01 Aldy Hernandez <>
* Merge from mainline at revision 118200.
2006-10-09 Aldy Hernandez <>
* tree-inline.c (copy_bb): Check for GIMPLE_MODIFY_STMT, and adjust
2006-10-09 Aldy Hernandez <>
* tree.h (TREE_CHAIN, TREE_TYPE): Add versions for non GCC or not
enable checking.
Also, add __extension__ to GCC versions.
* tree-mudflap.c (mf_xform_derefs_1): Add parentheses around TREE_TYPE.
* tree-inline.c (copy_tree_r): Initialize chain to assuage the warning
2006-10-05 Aldy Hernandez <>
* tree-complex.c (expand_complex_libcall): Adjust for
(expand_complex_comparison): Same.
* tree-pretty-print.c (dump_generic_node): Is_expr should include
GIMPLE_STMT_P statements.
* value-prof.c (tree_divmod_fixed_value_transform): Adjust for
(tree_mod_pow2_value_transform): Same.
(tree_mod_subtract_transform): Same.
* tree.c (build2_stat): Check for gimplified function in cfun.
* tree.h (DECL_GIMPLIFIED): Delete.
(struct tree_function_decl): Remove gimplified_flag.
* omp-low.c (lower_omp_for): Adjust for GIMPLE_MODIFY_STMT.
* cp/cp-gimplify.c (cp_gimplify_expr): Adjust for GIMPLE_MODIFY_STMT.
(cxx_omp_clause_apply_fn): Adjust for GIMPLE_MODIFY_STMT.
(cxx_omp_clause_copy_ctor): Same.
(cxx_omp_clause_assign_op): Same.
* c-pretty-print.c (pp_c_conditional_expression): Same.
(pp_c_expression): Same.
* langhooks.c (lhd_omp_predetermined_sharing): Same.
* function.h (struct function): Add gimplified field.
* tree-if-conv.c (add_to_dst_predicate_list): Adjust for
(find_phi_replacement_condition): Same.
* gimplify.c (gimplify_modify_expr_to_memcpy): Same.
(gimplify_modify_expr_to_memset): Same.
(gimplify_init_ctor_eval_range): Same.
(gimplify_modify_expr_complex_part): Same.
(tree_to_gimple_tuple): Same.
(gimplify_modify_expr): Same.
(gimple_push_cleanup): Same.
(gimplify_omp_for): Same.
(gimplify_omp_atomic_pipeline): Same.
(gimplify_omp_atomic_mutex): Same.
(gimplify_expr): Same.
(gimplify_one_sizepos): Same.
(gimplify_function_tree): Same.
* tree-vect-patterns.c (vect_recog_dot_prod_pattern): Same.
(vect_recog_widen_sum_pattern): Same.
* tree-vect-transform.c (get_initial_def_for_reduction): Same.
(vect_create_epilog_for_reduction): Same.
(vectorizable_reduction): Same.
2006-09-28 Aldy Hernandez <>
* tree-ssa-math-opts.c (replace_reciprocal): Use GIMPLE_STMT_OPERAND.
* tree-if-conv.c (if_convertible_gimple_modify_stmt_p): Same.
(ifc_temp_var): Same.
* tree-vect-analyze.c (vect_determine_vectorization_factor): Check
for gimple statements.
(vect_analyze_operations): Same.
(exist_non_indexing_operands_for_use_p): Use GIMPLE_STMT_OPERAND.
* gimplify.c (gimplify_return_expr): Handle gimple statements.
* lambda-code.c (can_put_in_inner_loop): Same.
(can_put_after_inner_loop): Same.
* tree-vect-transform.c (vect_create_addr_base_for_vector_ref): Same.
(vect_create_data_ref_ptr): Same.
(vect_init_vector): Same.
(vect_get_vec_def_for_operand): Same.
(vect_create_epilog_for_reduction): Same.
(vectorizable_reduction): Same.
(vectorizable_assignment): Same.
(vectorizable_operation): Same.
(vectorizable_load): Same.
(vectorizable_condition): Same.
* config/rs6000/rs6000.c (rs6000_va_start): Do not create MODIFY_EXPRs.
(rs6000_gimplify_va_arg): Same.
2006-09-25 Aldy Hernandez <>
* tree-vrp.c (simplify_div_or_mod_using_ranges): Use
(simplify_abs_using_ranges): Same.
* tree-complex.c (expand_complex_operations_1): Use
* tree-ssa-loop-niter.c (simplify_replace_tree): Check for gimple
(get_val_for): Use GIMPLE_STMT_OPERAND.
* tree-tailcall.c (adjust_accumulator_values): Same.
(adjust_return_value): Same.
* tree.c (walk_tree): Use IS_GIMPLE_STMT_CODE_CLASS on default
case. Remove special case for tcc_gimple_stmt.
* tree.h (CAN_HAVE_LOCATION_P): New.
* tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Check for
* tree-stdarg.c (va_list_counter_bump): Use GIMPLE_STMT_OPERAND.
* tree-ssa-dom.c (propagate_rhs_into_lhs): Same.
* tree-nrv.c (execute_return_slot_opt): Same.
* tree-ssa-alias.c (count_uses_and_derefs): Check for GIMPLE_STMT_P.
* tree-vn.c (set_value_handle): Same.
(get_value_handle): Same.
* c-decl.c (add_stmt): Use CAN_HAVE_LOCATION_P.
* tree-vectorizer.c (find_loop_location): Same.
* c-typeck.c (c_process_expr_stmt): Same.
(c_finish_stmt_expr): Same.
* gimplify.c (should_carry_locus_p): Same.
(tree_to_gimple_tuple): Delete definition and use of unecessary
variable save_tree_block.
* tree-ssa-pre.c (phi_translate): Check for GIMPLE_STMT_P.
(create_expression_by_pieces): Use GIMPLE_STMT_OPERAND.
(realify_fake_stores): Same.
* tree-ssa-forwprop.c (forward_propagate_addr_into_variable_arr):
* tree-inline.c (copy_body_r): Check for EXPR_P and GIMPLE_STMT_P.
(copy_tree_r): Check for IS_GIMPLE_STMT_CODE_CLASS.
* tree-cfg.c (move_stmt_r): Use EXPR_P. Check for GIMPLE_STMT_P.
* c-parser.c (c_parser_typeof_specifier): Use CAN_HAVE_LOCATION_P.
(c_parser_statement_after_labels): Same.
(c_parser_paren_condition): Same.
(c_parser_for_statement): Same.
(c_parser_omp_for_loop): Same.
* tree-ssa-reassoc.c (linearize_expr): Use GIMPLE_STMT_OPERAND.
(linearize_expr_tree): Same.
* dwarf2out.c (reference_to_unused): Check for GIMPLE_STMT_P.
* function.c (instantiate_expr): Same.
2006-09-22 Aldy Hernandez <>
* tree.c (expr_location): Use GIMPLE_STMT_LOCUS.
(set_expr_location): Same.
(expr_locus): Same.
(set_expr_locus): Same.
(expr_filename): Same.
(expr_lineno): Same.
(tree_block): Use GIMPLE_STMT_BLOCK.
(protected_tree_operand): Use GIMPLE_STMT_OPERAND.
* tree.h (struct gimple_stmt): Remove prev and next.
(GIMPLE_STMT_OPERAND): Use union, not cast.
* gimplify.c (tree_to_gimple_tuple): Use union. Do not cast
to tree_base.
* tree-cfg.c (verify_gimple_tuples_1): Call gcc_unreachable.
2006-09-21 Aldy Hernandez <>
* tree-into-ssa.c (REGISTER_DEFS_IN_STMT): Change common.base
to base.
* tree-tailcall.c (adjust_return_value): Same.
* tree.c (tree_code_size): Remove GIMPLE_STATEMENT_LIST case.
(copy_node_stat): Change common.base to base.
(tree_node_structure): Return TS_GIMPLE_STATEMENT for tcc_gimple_stmt.
* tree.h (struct gimple_stmt): Make operands of type tree.
Change common.base to base.
(union tree_node): Add base. Remove gimple_statement_list.
Remove pointer from gstmt.
* tree-ssa-propagate.c (set_rhs): Change common.base to base.
* treestruct.def: Add TS_BASE. Remove TS_GIMPLE_STATEMENT_LIST.
* tree-vn.c (vn_compute): Change common.base to base.
* tree-eh.c (verify_eh_throw_stmt_node): Same.
* tree-flow-inline.h (var_ann): Same.
(function_ann): Same.
(stmt_ann): Same.
(mark_non_addressable): Same.
* gimplify.c (tree_to_gimple_tuple): Same.
* tree-dfa.c (create_var_ann): Change common.base to base.
(create_function_ann): Same.
(create_stmt_ann): Same.
(create_tree_ann): Same.
(collect_dfa_stats_r): Same.
* tree-ssa-pre.c (NECESSARY): Change common.base to base.
* tree-ssa-dce.c (NECESSARY): Same.
* tree-ssa.c (delete_tree_ssa): Same.
* tree-optimize.c (execute_free_cfg_annotations): Same.
* tree-flow.h: Same.
2006-09-19 Aldy Hernandez <>
* tree.c (tree_code_size): Handle GIMPLE_STATEMENT_LIST.
(tree_node_structure): Handle GIMPLE_STATEMENT_LIST and
* tree.h (struct gimple_stmt): Add prev and next fields.
(struct gimple_statement_list): New.
(union tree_node): Add gimple_stmt_list and gstmt.
2006-09-06 Aldy Hernandez <>
* tree-dump.c (dequeue_and_dump): Handle GIMPLE_MODIFY_STMT.
* tree-vrp.c (build_assert_expr_for): Change uses of
MODIFY_EXPR to GIMPLE_MODIFY_STMT and adjust accordingly.
(find_assert_locations): Same.
(remove_range_assertions): Same.
(stmt_interesting_for_vrp): Same.
(vrp_visit_assignment): Same.
(vrp_visit_stmt): Same.
(simplify_cond_using_ranges): Same.
* tree-into-ssa.c (REGISTER_DEFS_IN_THIS_STMT): Adjust for new
tree structure.
* tree-ssa-loop-im.c (movement_possibility): Change uses of
MODIFY_EXPR to GIMPLE_MODIFY_STMT and adjust accordingly.
(stmt_cost): Same.
(determine_invariantness_stmt): Same.
(schedule_sm): Same.
(gather_mem_refs_stmt): Same.
* tree-complex.c (init_dont_simulate_again): Same.
(complex_visit_stmt): Same.
(set_component_ssa_name): Same.
(expand_complex_move): Same.
(expand_complex_div_wide): Same.
(expand_complex_comparison): Same.
(expand_complex_operations_1): Same.
* tree-ssa-loop-niter.c (expand_simple_operations): Same.
(chain_of_csts_start): Same.
(infer_loop_bounds_from_undefined): Same.
* tree-pretty-print.c (dump_generic_node): Same.
(op_prio): Same.
(op_symbol_1): Same.
* tree-ssa-loop-manip.c (create_iv): Same.
* value-prof.c (tree_divmod_fixed_value): Same.
(tree_divmod_fixed_value_transform): Same.
(tree_mod_pow2): Same.
(tree_mod_pow2_value_transform): Same.
(tree_mod_subtract): Same.
(tree_mod_subtract_transform): Same.
(tree_divmod_values_to_profile): Same.
* tree-tailcall.c (process_assignment): Same.
(find_tail_calls): Same.
(adjust_accumulator_values): Same.
(adjust_return_value): Same.
(eliminate_tail_call): Same.
* tree.c (tree_code_size): Handle tcc_gimple_stmt.
(make_node_stat): Same.
(copy_node_stat): Handle gimple tuples.
(expr_align): Handle GIMPLE_MODIFY_STMT. Abort on MODIFY_EXPR.
(tree_node_structure): Handle tcc_gimple_stmt.
(build2_stat): Abort on MODIFY_EXPR after gimplification. Handle
(build2_gimple_stat): New.
(expr_location): New.
(set_expr_location): New.
(expr_has_location): New.
(expr_locus): New.
(set_expr_locus): New.
(expr_filename): New.
(expr_lineno): New.
(walk_tree): Handle tcc_gimple_stmt.
(tree_block): New.
(protected_tree_operand): New.
(protected_tree_type): New.
(tree_code_kind): Add gimple statements.
* tree.h (tree_code_class): Add tcc_gimple_stmt.
(struct tree_base): New.
(struct tree_common): Shrink.
(struct gimple_stmt): New.
(struct gimple_expr): New.
Adjust for new `common' layout.
(struct tree_function_decl): Add gimplified_flag.
EXPR_HAS_LOCATION): Call corresponding function.
(TREE_OPERAND_CHECK, TREE_TYPE, TREE_CHAIN): Abort on gimple tuples.
(TREE_BLOCK): Call tree_block.
(build2_gimple_stat): Protoize.
(build2_gimple): New.
(expr_location): Protoize.
(set_expr_location): Protoize.
(expr_has_location): Protoize.
(expr_locus): Protoize.
(set_expr_locus): Protoize.
(expr_filename): Protoize.
(expr_lineno): Protoize.
(tree_block): Protoize.
(protected_tree_operand): Protoize.
(protected_tree_type): Protoize.
(enum tree_node_kind): Add gimple_stmt_kind.
* c-decl.c (union lang_tree_node): Tuples do not have a
* ipa-cp.c (constant_val_insert): Change uses of MODIFY_EXPR to
GIMPLE_MODIFY_STMT and adjust accordingly.
* tree-scalar-evolution.c (follow_ssa_edge): Same.
(interpret_condition_phi): Same.
(pointer_used_p): Same.
(analyze_scalar_evolution_1): Same.
(scev_const_prop): Same.
(interpret_rhs_modify_stmt): Rename from
* builtins.c (std_expand_builtin_va_start): Change uses of
MODIFY_EXPR to GIMPLE_MODIFY_STMT and adjust accordingly.
(std_gimplify_va_arg_expr): Same.
(expand_builtin_va_copy): Same.
(integer_valued_real_p): Same.
* fold-const.c (maybe_lvalue_p): Same.
(fold_unary): Same.
(tree_expr_nonnegative_p): Same.
(tree_expr_nonzero_p): Same.
* omp-low.c (extract_omp_for_data): Same.
(lower_rec_input_clauses): Same.
(lower_reduction_clauses): Same.
(lower_copyprivate_clauses): Same.
(lower_send_clauses): Same.
(lower_send_shared_vars): Same.
(expand_parallel_call): Same.
(expand_omp_parallel): Same.
(expand_omp_for_generic): Same.
(expand_omp_for_static_nochunk): Same.
(expand_omp_for_static_chunk): Same.
(expand_omp_sections): Same.
(lower_omp_single_copy): Same.
(lower_omp_parallel): Same.
* tree-ssa-dse.c (memory_address_same): Same.
(dse_optimize_stmt): Same.
* ipa-reference.c (scan_for_static_refs): Same.
* tree-gimple.c (is_gimple_reg_rhs): Same.
(get_call_expr_in): Same.
(recalculate_side_effects): Same.
* cgraphunit.c (cgraph_create_edges): Same.
* tree-ssa-copyrename.c (rename_ssa_copies): Same.
* tree-ssa-ccp.c (get_default_value): Same.
(likely_value): Same.
(visit_assignment): Same.
(ccp_visit_stmt): Same.
(get_maxval_strlen): Same.
(ccp_fold_builtin): Same.
* tree-ssa-loop-ivopts.c (find_givs_in_stmt_scev): Same.
(find_givs_in_stmt): Same.
(find_interesting_uses_op): Same.
(find_interesting_uses_stmt): Same.
(rewrite_use_nonlinear_expr): Same.
* ipa-pure-const.c (scan_function): Same.
* tree-stdarg.c (va_list_counter_bump): Same.
(check_all_va_list_escapes): Same.
(execute_optimize_stdarg): Same.
* tree-ssa-math-opts.c (compute_merit): Same.
(insert_reciprocals): Same.
(execute_cse_reciprocals): Same.
* tree-ssa-dom.c (initialize_hash_element): Same.
(simple_iv_increment_p): Same.
(record_equivalences_from_stmt): Same.
(optimize_stmt): Same.
(remove_stmt_or_phi): Same.
(get_rhs_or_phi_arg): Same.
(get_lhs_or_phi_result): Same.
(propagate_rhs_into_lhs): Same.
* tree-nrv.c (tree_nrv): Same.
(execute_return_slot_opt): Same.
* tree-ssa-propagate.c (get_rhs): Same.
(set_rhs): Same.
(stmt_makes_single_load): Same.
(stmt_makes_single_store): Same.
(replace_vuses_in): Same.
(fold_predicate_in): Same.
(substitute_and_fold): Same.
* tree-ssa-alias.c (compute_call_clobbered): Same.
(recalculate_used_alone): Same.
(count_uses_and_derefs): Same.
(is_escape_site): Same.
(find_used_portions): Same.
* gimple-low.c (lower_stmt): Same.
(block_may_fallthru): Same.
(lower_return_expr): Same.
* tree-ssa-sink.c (is_hidden_global_store): Same.
(statement_sink_location): Same.
* dwarf2out.c (loc_descriptor_from_tree_1): Same.
* expr.c (safe_from_p): Same.
(expand_expr_real): Same.
(expand_expr_real_1): Same.
* tree-ssa-loop-ivcanon.c (empty_loop_p): Same.
* predict.c (expr_expected_value): Same.
(strip_builtin_expect): Same.
(apply_return_prediction): Same.
(tree_bb_level_predictions): Same.
(tree_estimate_probability): Same.
* tree-vn.c (vn_compute): Same.
* tree-eh.c (add_stmt_to_eh_region_fn): Same.
(remove_stmt_from_eh_region_fn): Same.
(do_return_redirection): Same.
(honor_protect_cleanup_actions): Same.
(lower_try_finally_switch): Same.
(lower_eh_constructs_1): Same.
(tree_could_throw_p): Same.
(verify_eh_throw_stmt_node): Same.
* function.c (gimplify_parameters): Same.
* tree-vectorizer.c (vect_is_simple_use): Same.
(vect_is_simple_reduction): Same.
* ipa-type-escape.c (scan_for_refs): Same.
* tree-if-conv.c (tree_if_conversion): Same.
(tree_if_convert_stmt): Same.
(if_convertible_gimplify_modify_stmt_p): Rename from
(if_convertible_stmt_p): Adjust for GIMPLE_MODIFY_STMT.
(ifc_temp_var): Same.
(replace_phi_with_cond_modify_stmt): Rename from
(process_phi_nodes): Call replace_phi_with_cond_modify_stmt.
* tree-data-ref.c (find_data_references_in_loop): Adjust for
* tree-flow-inline.h (var_ann): Same.
(function_ann): Same.
(stmt_ann): Same.
(mark_non_addressable): Same.
* tree-vect-analyze.c (vect_determine_vectorization_factor): Same.
* gimplify.c (tree_to_gimple_tuple): New.
(build_stack_save_restore): Adjust for GIMPLE_MODIFY_STMT.
(gimplify_return_expr): Same.
(gimplify_decl_expr): Same.
(gimplify_self_mod_expr): Same.
(gimplify_cond_expr): Same.
(gimplify_init_constructor): Same.
(gimplify_modify_expr): Same.
(gimplify_expr): Same.
(gimplify_function_tree): Same.
(force_gimple_operand): Same.
* tree-ssa-phiopt.c (conditional_replacement): Same.
(minmax_replacement): Same.
(abs_replacement): Same.
* tree-dfa.c (create_var_ann): Same.
(create_function_ann): Same.
(create_stmt_ann): Same.
(create_tree_ann): Same.
(collect_dfa_stats_r): Same.
* tree-ssa-pre.c (find_or_generate_expression): Same.
(create_expression_by_pieces): Same.
(try_look_through_load): Same.
(insert_fake_stores): Same.
(realify_fake_stores): Same.
(compute_avail): Same.
(eliminate): Same.
(init_pre): Same.
(poolify_modify_stmt): Rename from poolify_modify_stmt.
(NECESSARY): Adjust for new `common' layout.
* tree-ssa-live.c (build_tree_conflict_graph): Adjust for
* tree-sra.c (sra_walk_modify_stmt): Rename from
(sra_walk_function): Adjust for GIMPLE_MODIFY_STMT.
(generate_copy_inout): Same.
(generate_element_copy): Same.
(generate_element_zero): Same.
(scalarize_copy): Same.
* tree-mudflap.c (mf_decl_cache_locals): Same.
(mf_build_check_statement_for): Same.
(mf_xform_derefs): Same.
* ipa-prop.c (ipa_method_modify_stmt): Same.
* print-tree.c (print_node): Handle gimple tuples.
Add case for tcc_gimple_stmt.
* tree-ssa-copy.c (stmt_may_generate_copy): Adjust for
(copy_prop_visit_assignment): Same.
(copy_prop_visit_stmt): Same.
(init_copy_prop): Same.
* tree-ssa-forwprop.c (ssa_name_defined_by_comparison_p): Same.
(forward_propagate_into_cond_1): Same.
(find_equivalent_equality_comparison): Same.
(tidy_after_forward_propagate_addr): Same.
(forward_propagate_addr_expr_1): Same.
(simplify_not_neg_expr): Same.
(simplify_switch_expr): Same.
* tree-ssa-dce.c (find_pdom): Same.
(mark_stmt_if_obviously_necessary): Same.
(NECESSARY): Adjust for new `common' layout.
* tree-flow.h: Same.
* tree-vect-patterns.c (widened_name_p): Adjust for
(vect_recog_dot_prod_pattern): Same.
(vect_recog_widen_sum_pattern): Same.
(vect_pattern_recog_1): Same.
* tree-nested.c (init_tmp_var): Same.
(save_tmp_var): Same.
(walk_stmts): Same.
(convert_call_expr): Same.
(finalize_nesting_tree_1): Same.
* tree-ssa.c (verify_ssa): Same.
(delete_tree_ssa): Same.
* lambda-code.c (lbv_to_gcc_expression): Same.
(lle_to_gcc_expression): Same.
(lambda_loopnest_to_gcc_loopnest): Same.
(can_put_in_inner_loop): Same.
(can_convert_to_perfect_nest): Same.
(perfect_nestify): Same.
* tree-ssa-loop-prefetch.c (gather_memory_references): Same.
* tree-inline.c (copy_body_r): Same.
(setup_one_parameter): Same.
(initialize_inlined_parameters): Same.
(estimate_num_insns_1): Same.
(expand_call_inline): Same.
(gimple_expand_calls_inline): Same.
(copy_tree_r): Same.
* tree-optimize.c (execute_free_cfg_annotations): Same.
* tree-vect-transform.c (vect_create_addr_base_for_vector_ref): Same.
(vect_align_data_ref): Same.
(vect_create_data_ref_ptr): Same.
(vect_init_vector): Same.
(vect_create_epilog_for_reduction): Same.
(vectorizable_reduction): Same.
(vectorizable_assignment): Same.
(vectorizable_operation): Same.
(vectorizable_store): Same.
(vectorizable_load): Same.
(vectorizable_live_operation): Same.
(vectorizable_condition): Same.
(vect_generate_tmps_on_preheader): Same.
(vect_create_cond_for_align_checks): Same.
* tree-object-size.c (collect_object_sizes_for): Same.
(check_for_plus_in_loops_1): Same.
(check_for_plus_in_loops): Same.
* tree-outof-ssa.c (insert_copy_on_edge): Same.
(replace_use_variable): Same.
(check_replaceable): Same.
(rewrite_trees): Same.
(identical_copies_p): Same.
(insert_backedge_copies): Same.
* tree-profile.c (tree_gen_edge_profiler): Same.
* tree-vect-generic.c (expand_vector_operations_1): Same.
* tree-ssa-structalias.c (update_alias_info): Same.
(find_func_aliases): Same.
* tree-cfg.c (factor_computed_gotos): Same.
(make_edges): Same.
(make_goto_expr_edges): Same.
(tree_merge_blocks): Same.
(remove_useless_stmts_cond): Same.
(remove_useless_stmts_1): Same.
(tree_find_edge_insert_loc): Same.
(verify_expr): Same.
(gimplify_val): Same.
(verify_gimple_tuples_1): New.
(verify_gimple_tuples): New.
(verify_stmts): Call verify_gimple_tuples.
* tree-ssa-reassoc.c (get_rank): Adjust for GIMPLE_MODIFY_STMT.
(get_unary_op): Same.
(linearize_expr): Same.
(get_single_immediate_use): Same.
(negate_value): Same.
(should_break_up_subtract): Same.
(break_up_subtract): Same.
(repropagate_negates): Same.
(break_up_subtract_bb): Same.
(reassociate_bb): Same.
* config/i386/i386.c (ix86_va_start): Same.
(ix86_gimplify_va_arg): Same.
* stmt.c (expand_expr_stmt): Same.
(warn_if_unused_value): Same.
(expand_return): Same.
* tree-ssanames.c (make_ssa_name): Same.
* tree-ssa-threadedge.c (lhs_of_dominating_assert): Same.
* tree-ssa-operands.c (finalize_ssa_defs): Same.
(add_virtual_operand): Same.
(get_expr_operands): Same.
(parse_ssa_operands): Same.
(get_modify_stmt_operands): Rename from get_modify_expr_operands.
2006-12-05 H.J. Lu <>
* Remove extra blank line.
2006-12-05 Bernd Schmidt <>
* (i[34567]86-*-*, x86-64-*-*): Use driver-i386.o only if
target is also an x86 variant.
2006-12-05 Richard Guenther <>
* config/i386/i386.c (ix86_builtin_vectorized_function): Declare.
(ix86_builtin_vectorized_function): New function to vectorize
2006-12-05 Bernd Schmidt <>
* config/bfin/bfin.c (output_file_start): Fix comment which referred to
2006-12-04 Jan Hubicka <>
* cfgexpand.c (expand_one_var): Guard expand_one_stack_var by
2006-12-04 Bernd Schmidt <>
* rtlanal.c (note_uses): Deal with SEQUENCEs.
* config/bfin/bfin.c: Include "timevar.h".
(bfin_flag_schedule_insns2, splitting_for_sched,
bfin_flag_var_tracking): New variables.
(print_operand): Handle '%!'.
(override_options): Disable normal sched2 pass, instead set
bfin_flag_schedule_insns2 for reorg to handle it.
(output_file_start): Likewise for var-tracking.
(bfin_optimize_loop): Take some care not to stumble over SEQUENCEs.
(gen_one_bundle, bfin_gen_bundles, type_for_anomaly, trapping_loads_p):
New functions.
(bfin_reorg): Do second scheduling pass here, and call
bfin_gen_bundles. Use type_for_anomaly and trapping_loads_p instead
of examining insns directly. If bfin_flag_var_tracking, call
var-tracking pass when done with everything else.
* config/bfin/bfin.h (PRINT_OPERAND_PUNCT_VALID_P): '!' is valid.
* config/bfin/ (UNSPEC_32BIT): New constant.
(movsi_insn32): New pattern, with two new splits to create it
before the final scheduling pass.
(neghi2): Not a dsp32 insn, rather alu0.
(movbi, pushsi_insn, popsi_insn, movsi_insn, movv2hi_insn, movhi_insn,
movqi_insn, movsf_insn, movsi_insv, extendhisi2, zero_extendhisi2,
extendqihi2, extendqisi2, zero_extendqihi2, zero_extendqisi2,
mulhisi3, umulhisi3, ssadsi3, sssubsi3, smaxsi3, sminsi3, abssi2,
ssnegsi2, signbitssi2, smaxhi3, sminhi3, abshi2, ssneghi2, signbitshi2,
movhi_low2high, movhi_high2high, movhi_low2low, movhi_high2low,
movhiv2hi_low, movhiv2hi_high, composev2hi, packv2hi, movv2hi_hi,
ssaddhi3, sssubhi3, addv2hi3, ssaddv2hi3, subv2hi3, sssubv2hi3,
addsubv2hi3, subaddv2hi3, ssaddsubv2hi3, sssubaddv2hi3, sublohiv2hi3,
subhilov2hi3, sssublohiv2hi3, sssubhilov2hi3, addlohiv2hi3,
addhilov2hi3, ssaddlohiv2hi3, ssaddhilov2hi3, sminv2hi3, smaxv2hi3,
flag_mulhi, flag_mulhisi, flag_mulhisi_parts, flag_machi,
flag_machi_acconly, flag_macinithi, flag_macinit1hi, mulv2hi3,
flag_mulv2hi, flag_mulv2hi_parts, flag_macv2hi_parts,
flag_macv2hi_parts_acconly, flag_macinitv2hi_parts,
flag_macinit1v2hi_parts, mulhisi_ll, mulhisi_lh, mulhisi_hl,
mulhisi_hh, ssnegv2hi2, absv2hi2, ssashiftv2hi3, ssashifthi3,
lshiftv2hi3, lshifthi3): Use '%!' to terminate all dsp32/load/store
variants instead of ';'.
(ror_one, rol_one): Likewise. Make them dsp32 insns.
(ashlsi3_insn, ashrsi3, lshrsi3): Add dsp32 variants.
(align8, align16, align24): Now named patterns; also using '%!'.
(mnop): New insn.
2006-12-05 Kazu Hirata <>
* config/i386/darwin.h, config/spu/spu.c, tree-ssa-live.c,
tree-vect-generic.c, tree-vect-transform.c: Fix comment typos.
2006-12-04 Trevor Smigiel <>
* config/spu/spu-protos.c (spu_split_address): Add.
* config/spu/spu.c (spu_split_address): Add.
(print_operand): Handle HIGH.
(spu_legitimate_address): Don't test for aligned CONST.
(spu_expand_mov): Don't split addresses here.
* config/spu/ (A): Don't test legitimate_const.
* config/spu/ Add split of movsi patterns for PIC mode.
(ceq_di): Use correct predicates.
2006-12-04 Eric Christopher <>
* config/darwin.h: Update copyright notice.
* config/i386/darwin.h: Ditto.
2006-12-04 Jan Hubicka <>
* builtins.c (fold_builtin_memory_op): Check that expr_size match.
* explow.c (expr_size, int_expr_size): Assert that size is non_NULL.
2006-12-04 Daniel Berlin <>
* tree-ssa-alias.c (compute_flow_sensitive_aliasing): Call
* tree-ssa-structalias.c (set_used_smts): Export.
(find_what_p_points_to): Don't call set_used_smts here.
* tree-ssa-structalias.h (set_used_smts): Add prototype.
2006-12-04 Daniel Berlin <>
* tree-ssa-alias.c (compute_may_aliases):
Compute flow sensitive before flow insensitive.
(compute_flow_sensitive_aliasing): Don't try to add
a symbol memory tag to itself.
* alias.h (alias_set_subset_of): New prototype.
* alias.c (alias_set_subset_of): New function.
* tree-ssa-structalias.c: Update comments.
(struct variable_info): Add finished_solution.
(new_varinfo): Set finished solution to NULL.
(var_escaped_vars): Remove.
(escaped_vars_tree): Remove.
(escaped_vars_id): Remove.
(nonlocal_vars_id): Remove.
(constraint_expr_type): Add INCLUDES.
(graph_size): Removed.
(dump_constraint): Support INCLUDES.
(build_constraint_graph): Ditto.
(collapse_nodes): Add merge_solutions argument.
Don't merge attributes.
(process_unification_queue): Just use collapse_nodes.
(perform_var_substitution): Update call to collapse_nodes.
(get_constraint_exp_from_ssa_var): Use INCLUDES.
(process_constraint): Fix non-field sensitive handling
Handle includes.
(get_constraint_for): Use INCLUDES.
(make_constraint_from_anything): Renamed from
(make_constraint_to_escaped): Removed.
(find_global_initializers): Removed.
(create_variable_info_for): Do not make constraints to escaped
vars anymore.
(dump_solution_for_var): Don't print out the equivalent points-to
sets, just use the name of the variable it shares it with.
(intra_create_variable_infos): Use INCLUDES.
Change nonlocal variable sets to anything sets.
(init_base_vars): Remove escaped_vars and nonlocal_var
(find_escape_constraints): Removed.
(delete_points_to_sets): Remove dead code.
(used_smt_calculated): New variable.
(set_used_smts): New function.
(merge_smts_into): New function.
(find_what_p_points_to): Modify to use SMTs.
(create_nonlocal_var): Remove.
* tree-ssa-operands.c (access_can_touch_variable): Remove
reference to nonlocal_all.
* tree-ssa.c (verify_name_tags): Remove.
2006-12-04 Carlos O'Donell <>
* config/arm/unwind-arm.c: Adjust __cxa_type_match declaration.
(__gnu_unwind_pr_common): Pass is_reference to __cxa_type_match.
2006-12-04 Andrew MacLeod <>
* tree-outof-ssa.c (coalesce_ssa_name): Use calculate_live_ranges.
* tree-ssa-live.c (new_tree_live_info, delete_tree_live_info): Update.
(add_livein_if_notdef): Delete.
(loe_visit_block): New. Propogate live on entry info for a block into
each predecessor. If it changes, make sure it is visited again.
(live_worklist): Visit every block and update the live on entry info
for preds. Iterate over any that changed.
(set_var_live_on_entry): Populate the live on entry blocks with bits
based on the immediate uses of a var.
(calculate_live_on_entry): Remove.
(calculate_live_on_exit): Calculate live on exit based on the newly
oriented live on entry bits.
(calculate_live_ranges): Build live on entry and exit vectors.
(dump_live_info): Use new orientation of live on entry bitmaps.
(verify_live_on_entry): New. Split out verification code from old
calculate_live_on_entry routine.
* tree-ssa-live.h (struct tree_live_info_d): Add Working stack.
(live_entry_blocks): Rename to live_on_entry and return bitmap for a
basic_block instead of for a partition.
(live_merge_and_clear): Add asserts.
(make_live_on_entry): Set partition bit in basic block vector.
2006-12-04 Jakub Jelinek <>
PR libgomp/29947
* omp-low.c (expand_omp_for_static_nochunk,
expand_omp_for_static_chunk): Do all arithmetics in signed rather than
unsigned type.
PR middle-end/29965
* omp-low.c (determine_parallel_type): Don't try to optimize combined
parallels if region->exit or region->inner->exit is NULL.
(expand_omp_parallel): Handle NULL region->exit even if cfg is already
(expand_omp_for_generic): Handle NULL region->cond and region->exit.
(expand_omp_for): Use expand_omp_for_generic if either region->cond
or region->exit is NULL.
(expand_omp_sections): Handle NULL region->cond or region->exit.
2006-12-04 Eric Botcazou <>
* config/sparc/sp64-elf.h (JUMP_TABLES_IN_TEXT_SECTION): Delete.
* config/sparc/sysv4.h (JUMP_TABLES_IN_TEXT_SECTION): Likewise.
2006-12-04 Eric Botcazou <>
* tree.c (walk_type_fields): Do not handle TYPE_MIN_VALUE and
TYPE_MAX_VALUE for scalar types here but...
(walk_tree): ...there instead. Return NULL_TREE if the TYPE_DECL
is attached an error mark, and the return value of the callback
if it is not NULL_TREE.
2006-12-04 Ben Elliston <>
* config/spu/ (_mulv4si3): Remove unused local variables.
2006-12-03 Eric Christopher <>
PR target/24598
* config/t-slibgcc-darwin: Pass -install_name.
* config/darwin.h (LINK_COMMAND_SPEC): Remove use of
libtool. Only pass through options that the linker recognizes.
(LINK_SPEC): Update comment. Translate options.
(STARTFILE_SPEC): Add dylib1.o for shared libraries.
* config/darwin9.h (LINK_COMMAND_SPEC): Ditto above.
2006-12-03 Dorit Nuzman <>
* config/spu/ (smaxv4sf3, sminv4sf3): New.
2006-12-03 Uros Bizjak <>
PR target/30041
* config/i386/ ("*sse3_movddup"): Use operands[0] and
operands[1] in insn constraint. Correct type attribute to sselog1.
2006-12-02 H.J. Lu <>
PR target/30040
* config/i386/driver-i386.c: Include "coretypes.h" and "tm.h".
(bit_SSSE3): New.
(host_detect_local_cpu): Check -mtune= vs. -march=. Rewrite
processor detection.
* config/i386/i386.h (CC1_CPU_SPEC): Add -mtune=native for
-march=native if there is no -mtune=*.
* config/i386/x-i386 (driver-i386.o): Also depend on $(TM_H)
2006-12-02 Kaveh R. Ghazi <>
* doc/install.texi: Update recommended MPFR version. Remove
obsolete reference to cumulative patch.
2006-12-02 Lee Millward <>
PR c/27953
* c-decl.c (store_parm_decls_oldstyle): Robustify.
2006-11-30 Jan Hubicka <>
Uros Bizjak <>
* config/i386/i386.c (pentium4_cost, nocona_cost): Update
32bit memcpy/memset decriptors.
(decide_alg): With -minline-all-stringops and sizes that are best
to be copied via libcall still work hard enough to pick non-libcall
2006-12-02 Kazu Hirata <>
* doc/extend.texi, doc/invoke.texi, doc/md.texi: Fix typos.
* builtins.c, cfgloop.h, cgraph.h, config/arm/arm.c,
config/i386/i386.c, config/i386/i386.h, config/mips/mips.h,
config/rs6000/, config/rs6000/rs6000.c, config/sh/sh.c,
config/sh/, config/spu/spu-builtins.def,
config/spu/spu-c.c, config/spu/spu-modes.def,
config/spu/spu.c, config/spu/,
config/spu/spu_internals.h, config/spu/vmx2spu.h,
fold-const.c, fwprop.c, predict.c, tree-data-ref.h,
tree-flow.h, tree-ssa-loop-manip.c, tree-ssa-loop-niter.c,
tree-ssa-pre.c, tree-vect-analyze.c, tree-vect-transform.c,
tree-vectorizer.c, tree-vrp.c: Fix comment typos. Follow
spelling conventions.
* config/i386/i386.c: Fix a comment typo.
2006-12-01 Trevor Smigiel <>
* config/spu/spu.c (spu_immediate): Remove trailing comma.
(reloc_diagnostic): Call warning when -mwarn-reloc is specified.
* config/spu/ (zero_extendhisi2): Expand instead of split for
better optimization.
(floatv4siv4sf2): New.
(fix_truncv4sfv4si2): New.
(floatunsv4siv4sf2): New.
(fixuns_truncv4sfv4si2): New.
(addv16qi3): New.
(subv16qi3): New.
(negv16qi2): New.
(mulv8hi3): New.
(mulsi3): Remove.
(mul<mode>3): New.
(_mulv4si3): New.
(cmp<mode>): Don't accept constant arguments for DI, TI and SF.
* config/spu/spu_internals.h: Handle overloaded intrinsics in C++ with
spu_resolve_overloaded_builtin instead of static inline functions.
2006-12-01 Eric Botcazou <>
* fold-const.c (fold_binary) <LT_EXPR>: Use the precision of the
type instead of the size of its mode to compute the highest and
lowest possible values. Still check the size of the mode before
flipping the signedness of the comparison.
2006-12-01 Trevor Smigiel <>
* config/spu/ (spu_mov_operand): Add.
* config/spu/spu.c (spu_expand_extv): Remove unused code.
(print_operand_address, print_operand): Handle addresses containing AND.
(spu_split_load, spu_split_store): Use updated movti pattern.
* config/spu/ (_mov<mode>, _movdi, _movti): Handle loads and
stores in mov patterns for correct operation of reload.
(lq, lq_<mode>, stq, stq_<mode>): Remove.
2006-12-01 Volker Reichelt <>
PR c++/30021
* c-common.c (check_main_parameter_types): Check for error_mark_node.
2006-12-01 Andrew MacLeod <>
* common.opt (ftree-combine-temps): Remove.
* tree-outof-ssa.c (SSANORM_COMBINE_TEMPS): Remove.
(coalesce_ssa_name): Don't check for combine-temps.
(coalesce_vars): Remove.
(check_replaceable): Use num_imm_uses.
(remove_ssa_form, insert_backedge_copies, rewrite_out_of_ssa): Don't
check for combine-temps.
(rewrite_out_of_ssa): Never create a ref_count in the var_map.
* tree-ssa-copyrename.c (copy_rename_partition_coalesce): Change parms
to register_ssa_partition calls.
* tree-ssa-live.c (register_ssa_partition): Remove prototype.
(init_var_map, delete_var_map): remove refernces to ref_count.
(create_ssa_var_map): Never calculate a ref count.
(type_var_init): Remove.
* tree-ssa-live.h (typedef struct _var_map): Remove ref_count.
(create_ssa_var_map): Change Prototype to have no parameters.
(version_ref_count): Delete.
(register_ssa_partition): Remove 'is_use' paramater and don't set the
ref_count vector.
(type_var_num, type_var, type_var_first_partition,
type_var_next_partition, type_var_dump, type_var_delete,
type_var_remove_partition, type_var_find, type_var_compact,
type_var_decompact): Remove.
2006-12-01 Bernd Schmidt <>
* config/bfin/ (pushsi_insn, popsi_insn): Set correct addrtype
2006-12-01 Richard Guenther <>
PR c++/29433
* dwarf2out.c (struct pubname_struct): Make name const.
(add_pubtype): Do not xstrdup identifiers.
2006-12-01 Bernd Schmidt <>
* config/bfin/bfin.c (bfin_valid_add): Fix the logic that ensures
multiword accesses are in range.
2006-12-01 Zdenek Dvorak <>
PR tree-optimization/29921
* tree-ssa-ccp.c (canonicalize_float_value): New function.
(set_lattice_value): Use canonicalize_float_value.
2006-11-30 Andrew Pinski <>
* config/spu/spu.c (spu_builtin_range): Move from spu-c.c
(spu_cpu_cpp_builtins): Remove.
(spu_override_options): Don't set warn_main.
(spu_force_reg): Move from spu-c.c.
(spu_check_builtin_parm): Likewise.
(expand_builtin_args): Likewise.
(spu_expand_builtin_1): Likewise.
(spu_expand_builtin): Likewise.
* config/spu/spu.h (REGISTER_TARGET_PRAGMAS): Define, set
warn_main and targetm.resolve_overloaded_builtin.
* config/spu/spu-c.c (spu_builtin_range): Remove.
(spu_check_builtin_parm): Remove.
(expand_builtin_args): Remove.
(spu_expand_builtin_1): Remove.
(spu_expand_builtin): Remove.
(spu_cpu_cpp_builtins): Moved from spu.c
(spu_force_reg): Remove.
2006-12-01 Joseph Myers <>
David Edelsohn <>
PR target/24036
HARD_REGNO_NREGS_WITH_PADDING): Document new target macros.
* config/i386/i386.h (HARD_REGNO_NREGS_HAS_PADDING,
* rtlanal.c (subreg_regno_offset, subreg_offset_representable_p):
Use new macros to detect modes with holes; do not look at integer
(subreg_offset_representable_p): Check for and disallow cases
where the modes use different numbers of bits from registers.
* config/rs6000/rs6000.c (rs6000_emit_move): Handle TFmode
constant for soft-float.
(rs6000_hard_regno_nregs): Use UNITS_PER_FP_WORD for e500 GPRs
containing doubles.
(rs6000_split_multireg_move): Use DFmode reg_mode for TFmode moves
in E500 double case.
* config/rs6000/ (movtf): Allow soft-float.
(movtf_softfloat): New.
2006-11-30 Richard Sandiford <>
* simplify-rtx.c (simplify_rtx): Use simplify_subreg rather than
2006-11-30 Andrew Macleod <>
* tree-ssa-live.c (create_coalesce_list): Create a hash table.
(COALESCE_HASH_FN): New. Define hash function.
(partition_pair_map_hash): New. Hash value for a partition pair.
(partition_pair_map_eq): New. Equality for hash pairs.
(create_coalesce_list): Create hash table.
(delete_coalesce_list): Free hash table.
(find_partition_pair): Find/create pairs in hash table.
(compare_pairs): Sort pairs in ascending order now.
(num_coalesce_pairs): New. Number of pairs in hash table.
(struct partition_pair_iterator): Iterator struct for pair table.
(first_partition_pair): Iterator function for first pair.
(end_partition_pair_p): Iterator function for end of iteration.
(next_partition_pair): Iterator function for next pair.
(FOR_EACH_PARTITION_PAIR): Macro for iterating over pairs.
(sort_coalesce_list): Sort pairs from hash table into an array.
(pop_best_coalesce): Take pairs from the array.
(dump_coalesce_list): Update to use hash table or sorted array.
* tree-ssa-live.h (struct partition_pair_d): Remove next field.
(struct coalesce_list_d): Add hash table related fields.
2006-11-30 Jan Hubicka <>
PR middle-end/30028
* builtins.c (fold_builtin_memory_op): Fix typo in the check for
memmove/bcopy->memcpy conversion.
2006-11-30 Carlos O'Donell <>
* doc/tm.texi (MAX_OFILE_ALIGNMENT): Document default.
Default is the largest alignment supported for 32-bit ELF and
representable on a 32-bit host.
2006-11-30 Janis Johnson <>
* config/dfp-bit.c (DFP_TO_INT): Use wider precision.
2006-11-30 Jan Hubicka <>
* tree-ssa-operands.h (struct ssa_operands): New.
* tree-flow-inline.h (gimple_ssa_operands): New function.
* tree-flow.h: (struct gimple_df): Add ssa_operands.
* Remove gt-tree-ssa-operands.h
* tree-ssa-operands.c: Do not include gt-tree-ssa-operands.h
(free_defs, free_uses, free_vuses, free_maydefs, free_mustdefs,
operand_memory, operand_memory_index, ops_active): Remove statics.
(operand_build_sort_virtual): Update.
(ssa_operands_active): Update.
(init_ssa_operands): Update.
(fini_ssa_operands): Update.
(ssa_operand_alloc): Update.
(finalize_ssa_use_ops): Update.
(finalize_ssa_v_may_def_ops): Update.
(finalize_ssa_vuse_ops): Update.
(finalize_ssa_v_must_def_ops): Update.
2006-11-30 Richard Guenther <>
* tree-vectorizer.h (vectorizable_function): Export.
* tree-vect-transform.c (vectorizable_function): Likewise.
* tree-vect-patterns.c (vect_recog_pow_pattern): Set
type_in to scalar type in recognition of squaring.
Make sure the target can vectorize sqrt in recognition
of sqrt, set type_in to vector type in this case.
2006-11-30 Uros Bizjak <>
* config/i386/ (R10_REG): New constant.
* config/i386/i386.c (pro_epilogue_adjust_stack): Use R11_REG.
(ix86_emit_restore_regs_using_mov): Ditto.
(ix86_expand_call): Ditto.
(x86_output_mi_thunk): Ditto. Also use R10_REG.
2006-11-30 Steven Bosscher <>
* cselib.c (cselib_init): Use special MEM rtx form for callmem.
* alias.c (canon_true_dependence): Update comment.
2006-11-30 Steven Bosscher <>
* cgraphunit.c (cgraph_finalize_compilation_unit): Add a newline
at the end of a diagnostics message.
* alloc-pool.c (pool_free): Postpone clearing the pool entry
until after asserting that it was allocated in the right pool.
* cfgrtl.c (print_rtl_with_bb): Print predecessor and
successor edge information as well. Make output of live regs
on exit consistent with live regs on entry.
2006-11-30 Uros Bizjak <>
PR target/29852
* config/i386/ (*truncxfsf2_mixed, *truncxfdf2_mixed): Enable
insn patterns for TARGET_80387.
(*truncxfsf2_i387, *truncxfdf2_i387): Remove.
(*truncxfsf2_i387_1): Rename to *truncxfsf2_i387.
(*truncxfdf2_i387_1): Rename to *truncxfdf2_i387.
(fmod<mode>3, remainder<mode>3): Enable expaders for SSE math.
Generate truncxf<mode>2 insn patterns for strict SSE math.
2006-11-30 Uros Bizjak <>
* config/i386/ (movsf_1): Enable pattern for standard
80387 constants before reload when optimizing for size.
(*movdf_nointeger, *movdf_integer): Ditto.
(*movxf_nointeger, *movxf_integer): Disable patterns for standard
80387 constants before reload when not optimizing for size.
(*fop_xf_4_i387, *fop_xf_5_i387, *fop_xf_6_i387): Avoid float
extension of XFmode input operands.
2006-11-29 Andrew Pinski <>
* config/spu/crt0.c (__dso_handle): Define.
2006-11-30 Kaz Kojima <>
* emit-rtl.c (verify_rtl_sharing): Handle SEQUENCE specially
when clearing the used flags.
2006-11-29 Andrew Pinski <>
* config/spu/ (extend_compare): Fix whitespace formatting.
2006-11-29 Andrew Pinski <>
PR target/29945
* config/spu/ (extend_compare<mode>): New pattern.
(extend_compare): Change to expand and use the above pattern.
2006-11-29 Janis Johnson <>
* config/dfp-bit.c (DFP_TO_INT): Fix rounding mode.
* config/dfp-bit.h (CONTEXT_ROUND): Delete.
* config/dfp-bit.c: Replace CONTEXT_ROUND with DFP_INIT_ROUNDMODE.
* Fix dependencies for dfp-bit.c.
2006-11-29 Tehila Meyzels <>
* haifa-sched.c: Remove define LINE_NOTE(INSN). Remove line_note_head.
Update documentation.
(associate_line_notes_with_blocks): Kill.
(extend_bb): Remove basic block argument, put void instead.
Remove line number handling for each bb.
(save_line_notes): Kill.
(restore_line_notes): Kill.
(sched_init): Remove line_note_head initialization.
Change extend_bb call.
(sched_finish): Remove free of line_note_head.
(add_block): Change extend_bb call.
* sched-ebb.c (schedule_ebb): Remove save_line_notes,
rm_line_notes and restore_line_notes calls.
(schedule_ebbs): Remove rm_redundant_line_notes.
* sched-int.h (struct haifa_insn_data): Remove line_note.
(save_line_notes): Remove declaration.
(restore_line_notes): Remove declaration.
* modulo-sched.c (loop_canon_p): Update debug info printing
by using insn locators instead of line note.
(sms_schedule): Update debug info printing, by using insn
locators instead of line note.
* sched-rgn.c (debug_dependencies): Remove handling of case
n>0 (line number), since it's a dead code.
(schedule_region): Remove save_line_notes and
restore_line_notes calls.
2006-11-29 Joseph Myers <>
* config/rs6000/ (gpc_reg_operand): Check
* config/rs6000/rs6000.c (invalid_e500_subreg): Don't allow any
SImode subregs of SPE vectors.
* config/rs6000/ (insv): Fail for invalid E500 subregs.
* jump.c (true_regnum): Require subregs to satisfy
2006-11-29 Daniel Berlin <>
Steven Bosscher <>
* (tree-ssanames.o): Remove gt-tree-ssanames.h,
since it no longer exists.
2006-11-29 Duncan Sands <>
PR tree-optimization/23744
* tree-vrp.c (vrp_meet): do not require ranges to intersect.
2006-11-29 Duncan Sands <>
PR tree-optimization/23744
* testsuite/gcc.dg/tree-ssa/pr23744.c: new test.
2006-11-29 Duncan Sands <>
PR tree-optimization/23744
* testsuite/gcc.dg/tree-ssa/update-threading.c: xfail.
2006-11-29 Jie Zhang <>
* doc/tm.texi (NO_PROFILE_COUNTERS): Document more accurately.
2006-11-29 J"orn Rennecke <>
* sh.opt (minline-ic_invalidate): New option.
(musermode): Adjust comment.
* sh.c (sh_initialize_trampoline): Emit library call unless
is set; if it is set, don't emit library call if we can use icbi
* (ic_invalidate_line, ic_invalidate_line_sh4a): Also use
icbi for TARGET_SH4_300.
* doc/invoke.texi: Document -minline-ic_invalidate; Update
-musermode documentation.
2006-11-29 Jim Tison <>
__gthread_recursive_mutex_init): Define.
2006-11-29 Joseph Myers <>
* config/rs6000/rs6000.c (rs6000_gimplify_va_arg): If
STRICT_ALIGNMENT and the type is more aligned than the saved
registers, copy via a temporary.
2006-11-28 Andrew Pinski <>
PR tree-opt/29984
* tree-ssa-reassoc.c (eliminate_duplicate_pair): Handle MAX_EXPR
2006-11-28 Bob Wilson <>
* config/xtensa/lib1funcs.asm (__umulsidi3): Restore a12-a15 on exit.
2006-11-28 Jan Hubicka <>
Privatize SSA variables into gimple_df.
* tree-flow-inline.h
(gimple_in_ssa_p, gimple_aliases_computed_p, gimple_addressable_vars,
gimple_call_clobbered_vars, gimple_referenced_vars, gimple_global_var,
gimple_nonlocal_all): New accessors.
(first_referenced_var): Update.
(mark_stmt_modified): Update.
(is_call_clobbered): Update.
(mark_call_clobbered): Update.
(clear_call_clobbered): Update.
(mark_non_addressable): Update.
* tree-vrp.c (get_value_range): Update.
* tree-into-ssa.c (in_ssa_p): Kill.
(get_default_def_for): Update.
(rewrite_into_ssa): Update.
* tree-complex.c (init_parameter_lattice_values): Update.
(update_complex_assignment): Update.
(update_parameter_components): Update.
(expand_complex_libcall): Update.
(expand_complex_operations_1): Update.
* tree-tailcall.c (arg_needs_copy_p): Update.
(add_virtual_phis): Update.
(tree_optimize_tail_calls_1): Update.
* tree-ssa-dse.c (memory_ssa_name_same): Update.
* tree-ssa-copyrename.c
(copy_rename_partition_coalesce): Update.
* tree-ssa-math-opts.c (execute_cse_reciprocals): Update.
* tree-ssa-propagate.c (set_rhs): Update.
* tree-ssa-alias.c (aliases_computed_p, call_clobbered_vars,
addressable_vars, global_var):Kill.
(set_initial_properties): Update.
(init_alias_info): Update.
(finalize_ref_all_pointers): Update.
(setup_pointers_and_addressables): Update.
(maybe_create_global_var): Update.
(create_global_var): Update.
(dump_points_to_info): Update.
* function.h (struct gimple_df): Forward declare.
(struct function): Add GIMPLE_DF field.
* gimplify.c (force_gimple_operand): Update.
* tree-dfa.c (referenced_vars, default_defs): KIll.
(make_rename_temp): Update.
(dump_variable): Update.
(referenced_var_lookup): Update.
(referenced_var_check_and_insert): Update.
(default_def): Rename to ...
(gimple_default_def): ... this one; accept cfun argument.
(set_default_def): Update.
* tree-cfgcleanup.c (modified_noreturn_calls): Kill.
(cleanup_control_flow): Update.
* tree-ssa-pre.c (compute_avail): Update
* tree-ssa-live.c (calculate_live_on_entry): Update.
* tree-ssa.c (verify_use): Update.
(verify_call_clobbering): Update.
(verify_call_clobbering): Update.
(init_tree_ssa): Update.
(delete_tree_ssa): Update.
* tree-outof-ssa.c (coalesce_ssa_name): Update.
(rewrite_out_of_ssa): Update.
* tree-flow.h (gimple_df): New structure collecting dataflow variables.
private accessors.
(in_ssa_p, modified_noreturn_calls, referenced_vars, default_defs,
ssa_names, global_var, nonlocal_all, call_clobbered_vars,
addressable_vars, aliases_computed_p): Kill.
(default_def): Rename to...
(gimple_default_def): ... this one.
(defaule_def_fn): Kill.
(num_referenced_vars, ssa_names, num_ssa_names): Update.
* tree-ssa-structalias.c (nonlocal_all): Kill.
(get_constraint_exp_from_ssa_var): Update.
(create_nonlocal_var): Update.
(get_constraint_for): Update.
(update_alias_info): Update.
(find_global_initializers): Update.
(intra_create_variable_infos): Update.
(find_what_p_points_to): Update.
(init_alias_heapvars): Update.
* tree-cfg.c (remove_bb): Update.
(gimplify_val): Update.
* tree-ssa-reassoc.c (get_rank): Update.
(init_reassoc): Update.
* tree-ssanames.c: Do not include gt-tree-ssanames.h
(ssa_names, free_ssanames): Kill.
(init_ssanames): Update.
(make_ssa_name): Update.
(release_ssa_name): Update.
(release_defs): Update.
(replace_ssa_name_symbol): Update.
* tree-ssa-operands.c (access_can_touch_variable): Update.
(add_virtual_operand): Update.
(add_call_clobber_ops): Update.
(add_call_read_ops): Update.
(get_call_expr_operands): Update.
(get_asm_expr_operands): Update.
2006-11-28 Jan Hubicka <>
* builtins.c: Include tree-flow.h.
(fold_builtin_memory_op): Be more aggressive on converting memcpy to
assignment; convert memmove to memcpy for sizes greater than 1 where
alignment of operands prohibit the partial overlap.
2006-11-28 Jan Hubicka <>
* invoke.texi (large-stack-frame, large-stack-frame-growth): New params.
* cgraph.c (dump_cgraph_node): Dump stack usage.
* cgraph.h (cgraph_local_info): Add estimated_self_stack_size.
(cgraph_global_info): Add estimated_stack_size and stack_frame_offset.
* cgraphunit.c (cgraph_analyze_function): Analyze stack sizes.
* ipa-inline.c (cgraph_clone_inlined_nodes): Propagate stack usage.
(cgraph_check_inline_limits): Limit stack growth.
* cfgexpand.c: Include tree-inline.h.
(account_stack_vars): New function.
(expand_one_var): New param to just account the stack; return estimated
(expand_used_vars_for_block): Update call of expand_one_var.
(account_used_vars_for_block): New function.
(estimated_stack_frame_size): Likewise.
(init_vars_expansion, fini_vars_expansion): Break out from..
(expand_used_vars): ... here.
* tree-inline.h (estimated_stack_frame_size): Declare.
2006-11-28 Richard Guenther <>
* ggc-page.c (ggc_print_statistics): Use %ul and a cast to
unsigned long for printing OBJECT_SIZE.
2006-11-27 Steven Bosscher <>
* alias.c (init_alias_analysis): Remove simplification loop
after propagating pointers.
2006-11-27 Uros Bizjak <>
* config/i386/i386.c (x86_ext_80387_constants): Add m_K8, m_CORE2
and m_GENERIC64.
2006-11-27 Bob Wilson <>
* config/xtensa/xtensa.h (XCHAL_HAVE_MUL32_HIGH): Provide default.
2006-11-27 Roger Sayle <>
Manuel Lopez-Ibanez <>
* c-common.c (constant_fits_type_p): Delete.
(unsigned_conversion_warning): Delete.
(conversion_warning): Integrate Wconversion warning from
(convert_and_check): Integrate Woverflow warning from
unsigned_conversion_warning. Reorganize and simplify to avoid
dependence upon the middle-end setting TREE_OVERFLOW on integral
conversions, by using int_fits_type_p directly.
2006-11-27 Tobias Burnus <>
* doc/invoke.texi: Fixed typo.
2006-11-27 Michael Matz <>
Andreas Krebbel <>
PR target/29319
* config/s390/ (larl_operand): Check addend of larl
operand to be in range of -/+2GB.
* config/s390/s390.c (legitimize_pic_address): Likewise.
Changed type of variable even to HOST_WIDE_INT.
2006-11-27 Jan Hubicka <>
* expr.c (emit_block_move_via_libcall): Export.
(clear_storage_via_libcall): Rename to ...
(set_storage_via_libcall): ... this one; handle arbitrary value to set.
(clear_storage): Update to set_storage_via_libcall.
* expr.h (emit_block_move_via_libcall): Declare
* config/i386/i386.h (stringop_alg): New enum.
(MAX_STRINGOP_ALGS): New constant.
(stringop_algs): New struct.
(processor_costs): Add memcpy/memset descriptors.
* config/i386/ (movsi_insv_1_rex64): New pattern.
(strmovsi, strmovdi, strsetsi, strsetdi): Update; accept all operands
for memset.
* config/i386/i386.opt (minline-stringops-dynamically,
mstringop-strategy): New
* config/i386/i386-prostos.h (ix86_expand_movmem): Update prototype.
(ix86_expand-clrmem): Rename to ...
(ix86_expand_setmem): ... this one; update prototype.
* config/i386/i386.c (DUMMY_STRINGOP_ALGS): New constant.
(size_cost, i386_cost, i486_cost, pentium_cost, pentiumpro_cost,
geode_cost, k6_cost, athlon_cost, k8_cost, pentium4_cost,
nocona_cost, core2_cost, generic_cost, generic64_cost,
generic32_cost): Add memcpy/memset descriptors.
(x86_rep_movl_optimal): Remove.
(stringop_alg): New static variable.
(ix86_expand_aligntest): Handle predictions.
(override_options): Add strgop_alg handling.
(predict_jump): New function.
(scale_counter): New function.
(expand_set_or_movmem_via_loop): New function.
(expand_movmem_via_rep_mov): New function.
(expand_setmem_via_rep_stots): New function.
(emit_strmov): New function.
(expand_movmem_epilogue): New function.
(expand_setmem_epilogue_via_loop): New function.
(expand_setmem_epilogue): New function.
(expand_movmem_prologue): New function.
(expand_setmem_prologue): New function.
(decide_alg): New function.
(decide_alignment): New function.
(ix86_exand_movmem): Rewrite.
(promote_duplicated_reg): New function.
(ix86_expand_clrmem): Rename to ...
(ix86_expand_setmem): ... this one. Rewrite.
* invoke.texi (minline-stringops-dynamically): New command line option.
(mstringop-strategy): Likewise.
2006-11-27 Jan Hubicka <>
* cfgexpand.c (construct_exit_block): Don't disturb end of last BB.
* rtl.texi (NOTE_INSN_FUNCTION_END): Remove.
* final.c (final_scan_insn): Don't scan NOTE_INSN_FUNCTION_END.
* insn-notes.def (FUNCTION_END): Remove.
* jump.c (delete_related_insns): Don't worry about FUNCTION_END.
(redicect_jump_2): Don't accept -1 parameter to remove FUNCTION_END
* ifcvt.c (dead_or_predictable): Update call of redirect_jump_2.
* function.c (expand_function_end): Don't emit NOTE_INSN_FUNCTION_END
* cfglayout.c (duplicate_insn_chain): Don't worry about
2006-11-27 Richard Guenther <>
Zdenek Dvorak <>
* target.h (struct gcc_target): Add builtin_vectorized_function
target hook.
* target-def.h (TARGET_VECTORIZE): Likewise.
Document new target hook.
* targhooks.h (default_builtin_vectorized_function): Declare.
* targhooks.c (default_builtin_vectorized_function): Define.
* tree-vectorizer.h (stmt_vec_info_type): Add call_vec_info_type.
(vectorizable_call): Declare.
* tree-vect-analyze.c (vect_analyze_operations): Call
* tree-vect-transform.c (vectorizable_function): New static function.
(build_vectorized_function_call): Likewise.
(vectorizable_call): New function.
(vect_transform_stmt): Handle vectorizable calls.
2006-11-27 Richard Guenther <>
PR middle-end/25620
* builtins.c (expand_builtin_pow): Optimize non integer valued
constant exponents using sqrt or cbrt if possible. Always fall back
to expanding via optabs.
2006-11-27 Ira Rosen <>
PR tree-optimization/22372
* tree-vect-transform.c (vect_create_addr_base_for_vector_ref): Convert
the type of the base address.
(vect_create_data_ref_ptr): Add an argument, type of the data-ref. Use
it in the data-ref pointer creation.
(vect_init_vector): Add an argument, type of the init vector. Use it in
the stmt creation.
(vect_get_vec_def_for_operand): Fix calls to vect_init_vector.
(get_initial_def_for_reduction): Likewise.
(vect_create_epilog_for_reduction): Change type of MODIFY_EXPR to
(vectorizable_assignment, vect_permute_store_chain): Likewise.
(vectorizable_store): Fix call to vect_create_data_ref_ptr. Use the
correct type in stmt creation.
(vect_setup_realignment): Use the correct type in stmt creation.
(vect_permute_load_chain): Change type of MODIFY_EXPR to
(vectorizable_load): Fix calls to vect_create_data_ref_ptr. Change type
of MODIFY_EXPR to void_type_node.
(vectorizable_condition): Change type of MODIFY_EXPR to
(vect_update_ivs_after_vectorizer): Use the correct type in stmt
2006-11-27 Uros Bizjak <>
2006-05-08 Uros Bizjak <>
* config/i386/i386.c (ix86_rtx_costs) [FLOAT_EXTEND]: For
standard 80387 constants, raise the cost to prevent
compress_float_constant() to generate load from memory.
* config/i386/ Add new splitter pattern to split
float_extended load of constant from constant pool into
pure constant load.
2006-11-26 Kaveh R. Ghazi <>
* doc/install.texi: Move GMP/MPFR configure options from Fortran
section to general section. Remove documentation for
--with-mpfr-dir and --with-gmp-dir, add documentation for
--with-mpfr-include, --with-mpfr-lib, --with-gmp-include and
* builtins.c (fold_builtin_fmin_fmax): Handle NaN arguments.
2006-11-26 Razya Ladklesky <>
* testsuite/gcc.dg/ipa/ipa-6.c: New.
2006-11-26 Razya Ladklesky <>
PR tree-optimization/29122
* tree-inline.c (tree_function_versioning): Update DECL_ASSEMBLER_NAME
for the new version. Assign NULL to DECL_RTL of the new version.
2006-11-25 Uros Bizjak <>
* reg-stack.c (get_true_reg): Fix UNSPEC_TRUNC_NOOP handling.
2006-11-25 Steven Bosscher <>
* cse.c (cse_altered): Remove.
(record_jump_equiv): Make true/false argument a bool instead
of an int.
(cse_insn): Don't set cse_altered. Use delete_insn_and_edges
where appropriate. Emit a new jump before the existing one
instead of after so that delete_insn_and_edges removes the
dead edges properly. Check any_condjump_p before calling
(cse_basic_block): Check any_condjump_p before calling
(cse_main): Don't set/check cse_altered. Remove USE_C_ALLOCA.
2006-11-25 Brooks Moses <>
* c.opt: Remove -ffixed-form, -ffixed-line-length-none, and
-ffixed-line-length-* options.
2006-11-25 Uros Bizjak <>
* config/i386/ (fpremxf4): Rename to fpremxf4_i387.
(fprem1xf4): Rename to fprem1xf4_i387.
(fmodsf3, fmoddf3): Macroize patterns using X87MODEF12 mode macro.
Rename patterns to fmod<mode>3. Use general_operand operand
constraint for operands 1 and 2. Use SSE_FLOAT_MODE_P to disable
patterns for SSE math.
(remaindersf3, remainderdf3): Ditto.
2006-11-25 Joseph Myers <>
* function.c (instantiate_virtual_regs_in_insn): Call force_reg
inside start_sequence / end_sequence pair.
2006-11-25 Steven Bosscher <>
* jump.c (mark_all_labels): Work in cfglayout mode.
* cfgcleanup.c (cleanup_cfg): Do not call delete_dead_jumptables
when in cfglayout mode, because there are no dead jumptables
* cfgrtl.c (commit_one_edge_insertion): Don't set bb->aux when
in cfglayout mode.
(commit_edge_insertions): Do not allow insertion of instructions
with control flow insns when in cfglayout mode.
2006-11-25 Zdenek Dvorak <>
* tree-vrp.c (execute_vrp): Do not pass loops structure through
* loop-unswitch.c (unswitch_loops, unswitch_single_loop,
unswitch_loop): Ditto.
* tree-loop-linear.c (linear_transform_loops): Ditto.
* tree-ssa-loop-im.c (determine_lsm, tree_ssa_lim_initialize,
tree_ssa_lim): Ditto.
* tree-ssa-loop-niter.c (estimate_numbers_of_iterations,
free_numbers_of_iterations_estimates): Ditto.
* tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops,
tree_unswitch_single_loop, tree_unswitch_loop): Ditto.