+2006-12-16 Andreas Tobler <a.tobler@schweiz.org>
+
+ * passes.c (verify_curr_properties): Define only for ENABLE_CHECKING.
+
+2006-12-16 Jan Hubicka <jh@suse.cz>
+
+ * 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 <manu@gcc.gnu.org>
+
+ 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 <jakub@redhat.com>
+
+ PR target/30185
+ * config/rs6000/rs6000.md (div<mode>3): Use correct mode in
+ force_reg call.
+
+2006-12-15 Andrew Pinski <pinski@gmail.com>
+
+ 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 <ubizjak@gmail.com>
+
+ * invoke.texi (mstringop-strategy): Add missing "byte_loop" value.
+
+2006-12-14 Jan Hubicka <jh@suse.cz>
+
+ * tree-flow.h (struct stmt_ann_d): Move bitfield references_memory
+ to proper place.
+
+2006-12-14 Richard Guenther <rguenther@suse.de>
+
+ 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
+ REALPART_EXPR and IMAGPART_EXPR.
+
+2006-12-14 Richard Guenther <rguenther@suse.de>
+
+ 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 <rguenther@suse.de>
+
+ 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 <dorit@il.ibm.com>
+ Trevor Smigiel <trevor_smigiel@playstation.sony.com>
+
+ * spu.c (TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD): Defined.
+ (spu_init_builtins): Mark the SPU_MASK_FOR_LOAD builtin decl as read
+ only.
+ (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.
+ * spu.md (UNSPEC_SPU_REALIGN_LOAD, UNSPEC_SPU_MASK_FOR_LOAD):New.
+ (vec_realign_load_<mode>, spu_lvsr): New.
+
+2006-12-13 Ian Lance Taylor <iant@google.com>
+
+ 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
+ description.
+
+2006-12-13 Zdenek Dvorak <dvorakz@suse.cz>
+
+ * 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
+ coefficients.
+ (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.
+ * Makefile.in (tree-affine.o): Add.
+ (tree-ssa-address.o, tree-ssa-loop-ivopts.o): Add tree-affine.h
+ dependency.
+
+2006-12-13 Peter Bergner <bergner@vnet.ibm.com>
+
+ PR middle-end/30191
+ Revert:
+ * reload1.c (eliminate_regs_in_insn): Merge the plus_src "else" and
+ the offset == 0 "then" clauses.
+ * config/rs6000/predicates.md (gpc_reg_operand): Check for
+ reload_in_progress.
+
+2006-12-13 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.h (FIRST_PSEUDO_REGISTER): Define to 53.
+ (FIXED_REGISTERS, CALL_USED_REGISTERS): Remove dir register.
+ (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/i386.md (R10_REG, R11_REG): Renumber.
+ (sse_prologue_save, *sse_prologue_save_insn): Renumber
+ hardcoded SSE register numbers.
+
+ * config/i386/mmx.md (mmx_emms, mmx_femms): Renumber
+ hardcoded MMX register numbers.
+
+
+2006-12-13 Mark Shinwell <shinwell@codesourcery.com>
+
+ * 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
+ word.
+ (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
+ FSTMX and FLDMX.
+ (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
+ VFP.
+ * config/arm/unwind-arm.c (struct vfpv3_regs): New.
+ (DEMAND_SAVE_VFP_D, DEMAND_SAVE_VFP_V3): New flags.
+ (__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):
+ Declare.
+ (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 <dnovillo@redhat.com>
+
+ PR 30089
+ * tree-ssa-operands.h (SSA_OPERAND_MEMORY_SIZE): Add space to
+ accomodate 511 operands.
+
+2006-12-13 Richard Guenther <rguenther@suse.de>
+
+ * builtins.c (expand_builtin_cexpi): Fix typo.
+
+2006-12-13 Jan Hubicka <jh@suse.cz>
+
+ * Makefile.in: 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.
+ (VALUE_HISTOGRAMS): New macro.
+ * 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 <rguenther@suse.de>
+
+ * ipa-inline.c (cgraph_flatten_node): Replace leafify with
+ flatten.
+ (cgraph_decide_inlining): Likewise.
+
+2006-12-13 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/17687
+ * builtins.def (BUILT_IN_CEXPI, BUILT_IN_CEXPIF, BUILT_IN_CEXPIL):
+ New builtins for imaginary argument cexp.
+ * builtin-types.def (BT_FN_COMPLEX_FLOAT_FLOAT,
+ BT_FN_COMPLEX_DOUBLE_DOUBLE, BT_FN_COMPLEX_LONGDOUBLE_LONGDOUBLE):
+ 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 <rguenther@suse.de>
+
+ * ipa-reference.c (scan_for_static_refs): Also scan
+ tcc_comparison class trees.
+
+2006-12-12 David Daney <ddaney@avtrex.com>
+
+ * config/mips/mips.h (ASM_OUTPUT_EXTERNAL): Undefine it before
+ define.
+
+2006-12-12 Andrew Pinski <pinskia@gmail.com>
+
+ * 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 <saliu@de.ibm.com>
+ Ben Elliston <bje@au.ibm.com>
+
+ * 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):
+ Declare.
+ * 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 <trevor_smigiel@playstation.sony.com>
+
+ * config/spu/spu.c (cpat_info): Fix an incorrectly identified case.
+
+2006-12-12 Geoffrey Keating <geoffk@apple.com>
+
+ * mips-tdump.c: Replace CROSS_COMPILE with
+ CROSS_DIRECTORY_STRUCTURE.
+ * mips-tfile.c: Likewise.
+ * gcc.c: Likewise.
+ * configure.ac: Likewise.
+ * cppdefault.c: Likewise.
+ * Makefile.in: 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 <uweigand@de.ibm.com>
+
+ * config/spu/spu.c (TARGET_ENCODE_SECTION_INFO): Define.
+ (spu_encode_section_info): New.
+ * config/spu/spu.h (ALIGNED_SYMBOL_REF_P): Adjust.
+ (SYMBOL_FLAG_ALIGN1): New.
+
+2006-12-12 Andrew Pinski <andrew_pinski@playstation.sony.com>
+
+ PR tree-opt/28624
+ * tree-ssa-dom.c (eliminate_degenerate_phis): Use a temporary
+ bitmap for EXECUTE_IF_SET_IN_BITMAP.
+
+2006-12-12 Andrew Pinski <andrew_pinski@playstation.sony.com>
+
+ PR tree-opt/28436
+ * tree.h (DECL_COMPLEX_GIMPLE_REG_P): Rename to ...
+ (DECL_GIMPLE_REG_P): This.
+ * fold-const.c (fold_indirect_ref_1): Fold *(foo *)&vectorfoo into
+ using BIT_FIELD_REF.
+ * 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
+ DECL_GIMPLE_REG_P.
+ * 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 DECL_GIMPLE_REG_P. * tree-inline.c (declare_return_variable): Use the renamed
+ DECL_GIMPLE_REG_P
+ and check for VECTOR_TYPE.
+ (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.
+ * Makefile.in (expmed.o): Update dependencies.
+
+2006-12-12 Peter Bergner <bergner@vnet.ibm.com>
+
+ * reload1.c (eliminate_regs_in_insn): Merge the plus_src "else" and
+ the offset == 0 "then" clauses.
+ * config/rs6000/predicates.md (gpc_reg_operand): Check for
+ reload_in_progress.
+
+2006-12-12 Marcin Dalecki <martin@dalecki.de>
+
+ * 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 <amacleod@redhat.com>
+
+ 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 <jakub@redhat.com>
+
+ 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 <wilson@specifix.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ 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 <irar@il.ibm.com>
+
+ * 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 <rguenther@suse.de>
+
+ 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 <hainque@adacore.com>
+
+ * config/rs6000/t-vxworks: Remove assignment to LIB2FUNCS_EXTRA.
+
+2006-12-12 Olivier Hainque <hainque@adacore.com>
+
+ * 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 <saliu@de.ibm.com>
+ Ben Elliston <bje@au.ibm.com>
+
+ * 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/gcc.target/spu/fixed-range.c: New.
+ * testsuite/gcc.target/spu/fixed-range-bad.c: Ditto.
+
+2006-12-11 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR middle-end/17982
+ PR middle-end/20218
+ * cgraphunit.c (cgraph_optimize): Remove call to
+ process_pending_assemble_externals.
+
+ * 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
+ pending_assemble_externals.
+ (maybe_assemble_visibility): Make it extern and return int.
+ (default_elf_asm_output_external): New.
+
+2006-12-11 Daniel Berlin <dberlin@dberlin.org>
+
+ * tree-ssa-structalias.c (handle_ptr_arith): Return false when we
+ can't handle the pointer arithmetic.
+
+2006-12-11 Diego Novillo <dnovillo@redhat.com>
+
+ * 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
+ global-var-threshold.
+ 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
+ symbol.
+ (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
+ instead.
+ (rewrite_blocks): Move code to free memory to
+ fini_ssa_renamer.
+ (mark_def_site_blocks): Move initialization code to
+ init_ssa_renamer.
+ (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
+ mem_syms_to_rename.
+ 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
+ mark_set_for_renaming.
+ (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.
+ Handle MEMORY_PARTITION_TAG.
+ 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_contains_struct.
+ (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
+ users.
+ (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
+ needed.
+ (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
+ num_referenced_vars.
+ 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
+ arguments.
+
+ * tree-ssa-operands.c (stmt_references_memory_p): Move from
+ tree-ssa.c.
+ (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.
+ * Makefile.in (tree-ssa-structalias.o): Include
+ pointer-set.h
+ (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
+ users.
+ <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.
+ (PARAM_MAX_ALIASED_VOPS): Set to 10.
+ * tree-ssanames.c (make_ssa_name): Initialize
+ SSA_NAME_IS_DEFAULT_DEF to 0.
+
+2006-12-11 Aldy Hernandez <aldyh@redhat.com>
+
+ * 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 <amacleod@redhat.com>
+
+ * tree-ssa-operands.h (struct vuse_element_d): Declare.
+ (vuse_element_t): Declare.
+ (struct vuse_vec_d): Declare.
+ (vuse_vec_p): Declare.
+ (VUSE_VECT_NUM_ELEM): Define.
+ (VUSE_VECT_ELEMENT_NC): Define.
+ (VUSE_ELEMENT_PTR_NC): Define.
+ (VUSE_ELEMENT_VAR_NC): Define.
+ (VUSE_VECT_ELEMENT): Define.
+ (VUSE_ELEMENT_PTR): Define.
+ (VUSE_ELEMENT_VAR): Define.
+ (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_KILL_PTR): Use VUSE_OP_PTR.
+ (MUSTDEF_KILL): Use VUSE_OP.
+ (MUSTDEF_NUM): Define.
+ (MUSTDEF_VECT): 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
+ operators.
+ * 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.
+ (ALLOC_OPTYPE): Remove.
+ 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 <aldyh@redhat.com>
+
+ * 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
+ finalize_ssa_v_must_defs.
+ (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
+ SSA_OP_ALL_KILLS.
+
+ * tree-ssa-loop-manip.c (find_uses_to_rename_stmt): Remove
+ SSA_OP_ALL_KILLS.
+ (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
+ SSA_OP_VMAYDEF.
+ (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
+ references.
+ (MUSTDEF_OPS): Remove.
+ (SSA_OP_VMUSTDEF): Remove.
+ (FOR_EACH_SSA_MUSTDEF_OPERAND): 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.
+ (SSA_OP_VIRTUAL_DEFS): Remove SSA_OP_VMUSTDEF.
+ (MUSTDEF_RESULT_PTR): Remove.
+ (MUSTDEF_RESULT): Remove.
+ (MUSTDEF_KILL_PTR): Remove.
+ (MUSTDEF_KILL): Remove.
+ (MUSTDEF_NUM): Remove.
+ (MUSTDEF_VECT): Remove.
+ (SSA_OP_VIRTUAL_KILLS): Remove.
+ (SSA_OP_ALL_VIRTUALS): Remove SSA_OP_VIRTUAL_KILLS.
+ (SSA_OP_VMUSTKILL): Remove.
+ (SSA_OP_ALL_KILLS): Remove.
+ (SSA_OP_ALL_OPERANDS): Remove SSA_OP_ALL_KILLS.
+
+ * tree-flow-inline.h (op_iter_init_def): Remove
+ SSA_OP_VIRTUAL_KILLS.
+ (delink_stmt_imm_use): Remove SSA_OP_ALL_KILLS.
+
+ * tree-ssa-pre.c (compute_rvuse_and_antic_safe): Remove
+ SSA_OP_VIRTUAL_KILLS.
+
+ * tree-ssa-loop-im.c (determine_max_movement): Remove
+ SSA_OP_VIRTUAL_KILLS.
+ (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
+ mark_really_necessary_kill_operand_phis.
+
+ * 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
+ SSA_OP_VMAYDEF.
+
+ * 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}
+ code.
+
+ * tree-into-ssa.c (mark_def_sites): Change SSA_OP_VMUSTKILL to
+ SSA_OP_VMAYUSE.
+
+ * tree-ssa-pre.c (compute_rvuse_and_antic_safe): Remove
+ SSA_OP_VMUSTDEF and SSA_OP_VMUSTKILL.
+
+ * tree-ssa-propagate.c (stmt_makes_single_store): Remove
+ SSA_OP_VMUSTDEF.
+
+2006-12-11 Zdenek Dvorak <dvorakz@suse.cz>
+
+ PR rtl-optimization/30113
+ * loop-iv.c (implies_p): Require the mode of the operands to be
+ scalar.
+
+2006-12-11 Diego Novillo <dnovillo@redhat.com>
+
+ * 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
+ push_stmt_changes/pop_stmt_changes.
+ (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
+ operands.
+
+2006-12-11 Andreas Schwab <schwab@suse.de>
+
+ * varasm.c (elf_record_gcc_switches): Cast second argument of
+ ASM_OUTPUT_SKIP to unsigned HOST_WIDE_INT.
+
+2006-12-11 Diego Novillo <dnovillo@redhat.com>
+
+ * 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 <carlos@codesourcery.com>
+
+ * config/arm/elf.h (MAX_OFILE_ALIGNMENT): Remove definition.
+
+2006-12-11 Jan Hubicka <jh@suse.cz>
+
+ * 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):
+ Declare.
+ * builtins.c (validate_arglist, builtin_memset_read_str,
+ get_pointer_alignment): Export.
+
2006-12-11 Uros Bizjak <ubizjak@gmail.com>
PR target/30120