+2006-04-18 Paolo Bonzini <bonzini@gnu.org>
+
+ PR tree-optimization/26821
+ * tree-ssa-math-opts.c (get_constant_one): New.
+ (insert_reciprocals): Use it.
+
+2006-04-17 Geoffrey Keating <geoffk@apple.com>
+
+ * dwarf2out.c (free_AT): Delete.
+ (remove_AT): Update string ref counts.
+ (remove_child_TAG): Don't call free_die.
+ (free_die): Delete.
+ (break_out_includes): Don't call free_die on DW_TAG_GNU_BINCL
+ or DW_TAG_GNU_EINCL.
+ (prune_unused_types_walk_attribs): Reset string refcounts.
+ (prune_unused_types_update_strings): New.
+ (prune_unused_types_prune): Don't make unnecessary stores. Don't
+ call free_die. Do call prune_unused_types_update_strings.
+ (prune_unused_types): Empty debug_str_hash.
+
+2006-04-17 Roger Sayle <roger@eyesopen.com>
+
+ * expr.c (expand_assignment): Optimize away no-op moves where the
+ source and destination are equal and have no side-effects.
+
+2006-04-17 Richard Guenther <rguenther@suse.de>
+
+ PR target/26826
+ * reload.c (push_reload): Guard calls to get_secondary_mem
+ for memory subregs.
+
+2006-04-16 Kazu Hirata <kazu@codesourcery.com>
+
+ * alias.c (reg_base_value, old_reg_base_value): Change the
+ type to VEC(rtx,gc) *.
+ (REG_BASE_VALUE, find_base_value, record_set,
+ init_alias_analysis): Use VEC instead of VARRAY.
+
+ * alias.c (alias_sets): Change the type to
+ VEC(alias_set_entry,gc) *.
+ (get_alias_set_entry, new_alias_set, record_alias_subset): Use
+ VEC instead of VARRAY.
+ (last_alias_set): Remove.
+
+ * cgraph.h (cgraph_edge_p): New.
+ Update the prototype of cgraph_function_versioning.
+ * cgraphunit.c (cgraph_copy_node_for_versioning,
+ cgraph_function_versioning): Use VEC instead of VARRAY.
+ * ipa-cp.c (ipcp_insert_stage): Likewise.
+
+2006-04-16 Roger Sayle <roger@eyesopen.com>
+
+ PR target/26961
+ * fold-const.c (fold_ternary): When converting "A ? B : C" into either
+ "A op B" or "A op C", we may need to convert A to the type of B and C.
+
+2006-04-16 Adam Nemet <anemet@caviumnetworks.com>
+
+ * target.h (struct gcc_target): Add mode_rep_extended.
+ * rtlanal.c (num_sign_bit_copies_in_rep): New global.
+ (init_num_sign_bit_copies_in_rep): Initialize it using
+ mode_rep_extended.
+ (truncate_to_mode): Use it.
+ (init_rtlanal): Call init_num_sign_bit_copies_in_rep.
+ * targhooks.h (default_mode_rep_extended): Declare it.
+ * targhooks.c (default_mode_rep_extended): Define it.
+ * target-def.h (TARGET_MODE_REP_EXTENDED): New macro. Default to
+ default_mode_rep_extended.
+ (TARGET_INITIALIZER): Include it.
+ * doc/tm.texi (Misc): Document it.
+ * config/mips/mips.c (TARGET_TRUNCATED_TO_MODE): Override it.
+ (mips_truncated_to_mode): New function.
+
+2006-04-16 Roger Sayle <roger@eyesopen.com>
+
+ PR middle-end/25474
+ * expr.c (compress_float_constant): Copy the narrow constant into
+ a new pseudo before extending it to its final width.
+
+2006-04-16 Roger Sayle <roger@eyesopen.com>
+ Andrew Pinski <pinskia@gcc.gnu.org>
+ Dale Johannesen <dalej@apple.com>
+
+ PR target/24076
+ * config/i386/i386.c (ix86_expand_vector_init_duplicate): Add
+ special case code to implement V8HImode and V16QImode with SSE2.
+
+2006-04-15 Roger Sayle <roger@eyesopen.com>
+
+ * config/i386/i386.c (ix86_va_start): Ensure all integer constant
+ trees are constructed with a suitable tree type.
+
+2006-04-15 Roger Sayle <roger@eyesopen.com>
+
+ * tree.c (integer_zerop): Ignore TREE_CONSTANT_OVERFLOW.
+ (integer_onep): Likewise.
+ (integer_all_onesp): Likewise.
+ (integer_pow2p): Likewise.
+ (integer_nonzerop): Likewise.
+ (real_zerop): Likewise.
+ (real_onep): Likewise.
+ (real_twop): Likewise.
+ (real_minus_onep): Likewise.
+ (int_size_in_bytes): Likewise.
+ (host_integerp): Likewise.
+
+2006-04-15 Kazu Hirata <kazu@codesourcery.com>
+
+ * cfgcleanup.c, config/dfp-bit.c, expr.c, fold-const.c,
+ jump.c, mips-tfile.c, omp-low.c, sched-int.h,
+ tree-ssa-loop-prefetch.c, tree-vrp.c: Fix comment typos.
+
+ * tree-ssa-structalias.h (alias_info): Remove num_references.
+
+2006-04-15 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * pa.md (output_bb patterns): Shorten long branch alternatives by 4.
+ (output_bvb patterns): Likewise.
+ * pa.c (output_bb): Use 'bb' insn for long branch case.
+ (output_bvb): Likewise use '{bvb|bb}' for long branch case.
+ (output_dbra): Use '{comb|cmpb}' for long branch case for alternative
+ 1. Correct length operand for alternatives 1 and 2.
+ (output_movb): Use '{comb|cmpb}' for long branch case for alternatives
+ 1, 2 and 3. Correct length operand for alternatives 1, 2 and 3.
+
+2006-04-14 Roger Sayle <roger@eyesopen.com>
+
+ * tree-cfg.c (make_edges, make_omp_sections_edges, move_stmt_r,
+ is_ctrl_altering_stmt): Reinstate RTH's changes from r112935 that
+ were accidentally reverted by r112959.
+
+2006-04-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/26823
+ * except.h (eh_region_outermost): New prototype.
+ * except.c (eh_region_outermost): New function.
+ * tree-cfg.c (find_outermost_region_in_block): Use it.
+
+2006-04-14 Kazu Hirata <kazu@codesourcery.com>
+
+ * local-alloc.c (rest_of_handle_local_alloc): Use VEC instead
+ of VARRAY.
+ * reload1.c (reg_equiv_memory_loc_varray): Rename to
+ reg_equiv_memory_loc_vec. Change the type to VEC(rtx,gc) *.
+ (init_reload, reload): Use VEC instead of VARRAY.
+ * reload.h: Update the prototype for
+ reg_equiv_memory_loc_varray.
+
+2006-04-14 Alexey Starovoytov <alexey.starovoytov@sun.com>
+ Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * config/sparc/sparc.c (emit_and_preserve): Allocate space for the
+ register save area.
+
+2005-04-13 Uros Bizjak <uros@kss-loka.si>
+
+ PR middle-end/27134
+ * builtins.c (expand_builtin_int_roundingfn): Use expand_normal()
+ to expand fallback builtin function call.
+
+2006-04-14 Alan Modra <amodra@bigpond.net.au>
+
+ PR middle-end/27095
+ * builtins.c: (expand_builtin_memset): Stabilize args before expansion
+ and emit libcall here in case the builtin fails.
+ (expand_builtin_strcmp): Always emit the libcall here on failure.
+
+2006-04-14 Kazu Hirata <kazu@codesourcery.com>
+
+ * basic-block.h (REG_BASIC_BLOCK): Use VEC instead of VARRAY.
+ * flow.c (reg_n_info): Change the type to
+ VEC(reg_info_p,heap) *.
+ * regclass.c (allocate_reg_info, free_reg_info): Use VEC
+ instead of VARRAY.
+ * regs.h (reg_info_p): New.
+ (REG_N_REFS, REG_FREQ, REG_N_SETS, REG_N_DEATHS,
+ REG_N_CALLS_CROSSED, REG_N_THROWING_CALLS_CROSSED,
+ REG_LIVE_LENGTH, REGNO_FIRST_UID, REGNO_LAST_UID): Use VEC
+ instead of VARRAY.
+
+2006-04-13 Eric Botcazou <ebotcazou@adacore.com>
+
+ * params.def (PARAM_MAX_SCHED_READY_INSNS): New parameter,
+ defaulting to 100.
+ * params.h (MAX_SCHED_READY_INSNS): New macro.
+ * haifa-sched.c: (queue_to_ready): Re-queue insns for the next cycle
+ past MAX_SCHED_READY_INSNS during the first scheduling pass.
+ (schedule_block): Delay insns past MAX_SCHED_READY_INSNS in
+ the ready list for 1 cycle during the first scheduling pass.
+ * doc/invoke.texi (--param): New parameter max-sched-ready-insns.
+
+2006-04-13 Richard Henderson <rth@redhat.com>
+
+ PR libgomp/26651
+ * gimple-low.c (lower_omp_directive): Remove dead code.
+ (lower_stmt): Do nothing except for openmp, except for OMP_PARALLEL.
+ * gimplify.c (gimplify_expr): Update for OMP_RETURN, OMP_CONTINUE.
+ * omp-low.c (struct omp_region): Move to tree-flow.h.
+ (root_omp_region): Export.
+ (omp_regions, lookup_omp_region): Remove.
+ (determine_parallel_type): Update for struct omp_region changes.
+ (dump_omp_region): Dump regions with block numbers.
+ (new_omp_region): Take type and block instead of stmt; malloc
+ instead of ggc.
+ (free_omp_region_1, free_omp_regions): New.
+ (expand_parallel_call): Take entry_stmt as argument; update for
+ changes to omp_region.
+ (remove_exit_barrier): Rewrite to update OMP_RETURN_NOWAIT.
+ (remove_exit_barriers): New.
+ (expand_omp_parallel): Update for struct omp_region changes.
+ (expand_omp_synch): Likewise.
+ (expand_omp): Likewise.
+ (expand_omp_for_static_nochunk): Likewise; update for OMP_CONTINUE.
+ (expand_omp_for_static_chunk): Likewise.
+ (expand_omp_for): Likewise.
+ (expand_omp_for_generic): Likewise; emit the proper GOMP_loop_end call.
+ (expand_omp_sections): Similarly, with GOMP_sections_end.
+ (expand_omp_single): New.
+ (build_omp_regions_1): Update for OMP_CONTINUE.
+ (execute_expand_omp): Call remove_exit_barriers, free_omp_regions.
+ (lower_omp_sections): Expand with OMP_CONTINUE, do not collect
+ OMP_SECTIONS_SECTIONS.
+ (lower_omp_single_simple): Don't emit barrier here.
+ (lower_omp_single_copy): Likewise.
+ (lower_omp_single): Fix bindings, and lower to straightline now.
+ (lower_omp_master, lower_omp_ordered): Likewise.
+ (lower_omp_critical): Likewise.
+ (lower_omp_for): Likewise. Emit OMP_CONTINUE.
+ * tree-cfg.c (make_edges): Collect an omp_region tree, use it for
+ omp edges, free it afterward.
+ (make_omp_sections_edges): Remove.
+ (is_ctrl_altering_stmt): Don't bother checking flag_openmp.
+ (move_stmt_r): Handle OMP_CONTINUE.
+ * tree-flow.h (struct omp_region): Move from omp-low.c. Switch
+ statement pointers to basic blocks. Add type member.
+ (root_omp_region, new_omp_region, free_omp_regions): Declare.
+ * tree-gimple.c (is_gimple_stmt): Handle OMP_RETURN, OMP_CONTINUE.
+ * tree-inline.c (estimate_num_insns_1): Likewise.
+ * tree-pretty-print.c (dump_generic_node): Likewise.
+ * tree-ssa-operands.c (get_expr_operands): Likewise.
+ * tree.def (OMP_SECTIONS): Remove OMP_SECTIONS_SECTIONS operand.
+ (OMP_RETURN): Rename from OMP_RETURN_EXPR.
+ (OMP_CONTINUE): New.
+ * tree.h (OMP_DIRECTIVE_P): Add OMP_CONTINUE.
+ (OMP_SECTIONS_SECTIONS): Remove.
+ (OMP_SECTION_LAST): New.
+ (OMP_RETURN_NOWAIT): New.
+
+2006-04-13 Roger Sayle <roger@eyesopen.com>
+
+ * fold-const.c (native_encode_vector, native_interpret_real):
+ Correct obvious mistakes in the previous check-in.
+
+2006-04-13 Roger Sayle <roger@eyesopen.com>
+
+ * fold-const.c (native_encode_expr): New function to encode
+ the target representation of an INTEGER_CST, REAL_CST, COMPLEX_CST
+ or VECTOR_CST into a specified buffer.
+ (native_encode_int): New function.
+ (native_encode_real): New function.
+ (native_encode_complex): New function.
+ (native_encode_vector): New function.
+ (native_interpret_expr): Inverse of native_encode_expr to convert
+ a target representation into an INTEGER_CST, REAL_CST etc...
+ (native_interpret_int): New function.
+ (native_interpret_real): New function.
+ (native_interpret_complex): New function.
+ (native_interpret_vector): New function.
+ (fold_view_convert_expr): New function to constant fold/evaluate
+ a VIEW_CONVERT_EXPR of a suitable constant expression.
+ (fold_unary) <VIEW_CONVERT_EXPR>: Call fold_view_convert_expr.
+ Change call of build1 to fold_build1 when constructing a
+ VIEW_CONVERT_EXPR.
+
2006-04-13 Paolo Bonzini <bonzini@gnu.org>
Ulrich Weigand <uweigand@de.ibm.com>