+2008-04-28 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/36066
+ * tree-vrp.c (execute_vrp): Cleanup the CFG only after finalizing
+ SCEV and loop.
+
+2008-04-28 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/36064
+ * config/i386/i386.md (floatdi<X87MODEF:mode>2_i387_with_xmm splitters):
+ Use match_scratch instead of match_operand for operands 3 and 4.
+
+2008-04-27 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/18754
+ PR tree-optimization/34223
+ * tree-pass.h (pass_complete_unrolli): Declare.
+ * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Print
+ loop size before and after unconditionally of UL_NO_GROWTH in effect.
+ Rewrite loop into loop closed SSA form if it is not already.
+ (tree_unroll_loops_completely): Re-structure to iterate over
+ innermost loops with intermediate CFG cleanups.
+ Unroll outermost loops only if requested or the code does not grow
+ doing so.
+ * tree-ssa-loop.c (gate_tree_vectorize): Don't shortcut if no
+ loops are available.
+ (tree_vectorize): Instead do so here.
+ (tree_complete_unroll): Also unroll outermost loops.
+ (tree_complete_unroll_inner): New function.
+ (gate_tree_complete_unroll_inner): Likewise.
+ (pass_complete_unrolli): New pass.
+ * tree-ssa-loop-manip.c (find_uses_to_rename_use): Only record
+ uses outside of the loop.
+ (tree_duplicate_loop_to_header_edge): Only verify loop-closed SSA
+ form if it is available.
+ * tree-flow.h (tree_unroll_loops_completely): Add extra parameter.
+ * passes.c (init_optimization_passes): Schedule complete inner
+ loop unrolling pass before the first CCP pass after final inlining.
+
+2008-04-27 Nathan Sidwell <nathan@codesourcery.com>
+
+ * targhooks.h (default_emutls_var_fields,
+ default_emutls_var_init): Declare.
+ * tree.h (DECL_THREAD_LOCAL): Compare against TLS_MODEL_REAL.
+ * target.h (struct gcc_target): Add struct emutls member.
+ * target-def.h (TARGET_EMUTLS_GET_ADDRESS,
+ TARGET_EMUTLS_REGISTER_COMMON, TARGET_EMUTLS_VAR_SECTION,
+ TARGET_EMUTLS_TMPL_SECTION, TARGET_EMUTLS_VAR_PREFIX,
+ TARGET_EMUTLS_TMPL_PREFIX, TARGET_EMUTLS_VAR_FIELDS,
+ TARGET_EMUTLS_VAR_INIT, TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS,
+ TARGET_EMUTLS_VAR_ALIGN_FIXED, TARGET_EMUTLS): New.
+ (TARGET_INITIALIZER): Add TARGET_EMUTLS.
+ * builtins.def (BUILT_IN_EMUTLS_GET_ADDRESS,
+ BUILT_IN_EMUTLS_REGISTER_COMMON): Get name from targetm structure.
+ * dwarf2out.c (loc_descriptor_from_tree_1): Check if emutls can
+ emit debug information.
+ * coretypes.h (tls_model): Add TLS_MODEL_EMULATED, TLS_MODEL_REAL.
+ * varasm.c: Include targhooks.h.
+ (emutls_object_section, emutls_tmpl_section): New.
+ (EMUTLS_VAR_PREFIX, EMUTLS_TMPL_PREFIX): Remove.
+ (EMUTLS_SEPARATOR): New.
+ (prefix_name): New.
+ (get_emutls_object_name): New.
+ (default_emutls_var_fields): New, broken out of ...
+ (get_emutls_object_type): ... here. Adjust to use target hooks.
+ (get_emutls_init_templ_addr): Adjust to use target hooks.
+ (emutls_decl): Adjust to use target hooks.
+ (emutls_finish): Likewise.
+ (default_emutls_var_init): New, broken out of ...
+ (assemble_variable): ... here. Adjust to use target hooks.
+ * output.h (enum section_category): Add SECCAT_EMUTLS_VAR,
+ SECCAT_EMUTLS_TMPL.
+ * c-common.c (handle_section_attribute): Prevent overriding
+ sections for emulated tls with special sections.
+ * config/i386/i386.c (x86_64_elf_select_section): Add
+ SECCAT_EMUTLS_VAR and SECCAT_EMUTLS_TMPL.
+ (x86_64_elf_unique_section): Likewise.
+ * config/vxworks.c: Include tree.h.
+ (vxworks_emutls_var_fields, vxworks_emutls_var_init): New.
+ (vxworks_override_options): Set TLS scheme.
+ * gcc/doc/tm.texi (Emulated TLS): New node.
+
+2008-04-26 Simon Baldwin <simonb@google.com>
+
+ PR c/35652
+ * builtins.c (c_strlen): Suppressed multiple warnings that can occur
+ with propagated string constants.
+
+2008-04-26 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.md (fix_trunc<mode>_i387_fisttp_with_temp): Use 'X'
+ constraint for operand 2 when operand 0 is memory operand.
+ (fix_truncdi_i387_with_temp): : Use 'X' constraint for operand 4 when
+ operand 0 is memory operand.
+ (fix_trunc<mode>_i387_with_temp): Ditto.
+ (*floatsi<mode>2_vector_mixed_with_temp): Use 'X' constraint for
+ operand 2 when operand 1 is memory operand.
+ (*float<SSEMODEI24:mode><MODEF:mode>2_mixed_with_temp): Ditto.
+ (*floatsi<mode>2_vector_sse_with_temp): Ditto.
+ (*float<SSEMODEI24:mode><MODEF:mode>2_sse_with_temp): Ditto.
+ (*float<SSEMODEI24:mode><X87MODEF:mode>2_i387_with_temp): Ditto.
+ (floatdi<X87MODEF:mode>2_i387_with_xmm): Use 'X' constraint for
+ operands 2,3 and 4 when operand 1 is memory operand.
+ (fistdi2_with_temp): Use 'X' constraint for operand 2 when operand 0
+ is memory operand.
+ (fistdi2_floor_with_temp): Ditto.
+ (fist<mode>2_floor_with_temp): Ditto.
+ (fistdi2_ceil_with_temp): Ditto.
+ (fist<mode>2_ceil_with_temp): Ditto.
+ (*truncdfsf_fast_mixed): Merge alternatives 0 and 1.
+
+2008-04-26 David Daney <ddaney@avtrex.com>
+
+ * config/mips/mips.md (UNSPEC_COMPARE_AND_SWAP_12): New
+ unspec_volitile.
+ (UNSPEC_SYNC_OLD_OP, UNSPEC_SYNC_NEW_OP, UNSPEC_SYNC_EXCHANGE,
+ UNSPEC_MEMORY_BARRIER, UNSPEC_SET_GOT_VERSION,
+ UNSPEC_UPDATE_GOT_VERSION): Renumber.
+ (sync_compare_and_swap<mode>): New expand for QI and HI modes.
+ (compare_and_swap_12): New insn.
+ * config/mips/mips-protos.h (mips_expand_compare_and_swap_12): Declare.
+ * config/mips/mips.c (mips_force_binary): New function.
+ (mips_emit_int_order_test, mips_expand_synci_loop): Use it.
+ (mips_expand_compare_and_swap_12): New function.
+ * config/mips/mips.h (MIPS_COMPARE_AND_SWAP_12): New macro.
+
+2008-04-25 Jan Hubicka <jh@suse.cz>
+
+ PR testsuite/35843
+ * cfgexpand.c (pass_expand): Turn into RTL pass.
+ * passes.c (execute_one_pass): Do pass typechecking after execution.
+ * tree-pass.h (pass_expand): Turn into RTL pass.
+
+ * function.h (struct rtl_data): Move here fields
+ accesses_prior_frames, calls_eh_return, saves_all_registers,
+ has_nonlocal_goto, has_asm_statement, is_thunk,
+ all_throwers_are_sibcalls, limit_stack, profile, uses_const_pool,
+ uses_pic_offset_table, uses_eh_lsda, tail_call_emit,
+ arg_pointer_save_area_init from struct function; turn into bool.
+ (struct function): Move
+ calls_eh_return, saves_all_registers, has_nonlocal_goto,
+ has_asm_statement, is_thunk, all_throwers_are_sibcalls, limit_stack,
+ profile, uses_const_pool, uses_pic_offset_table, uses_eh_lsda,
+ tail_call_emit, arg_pointer_save_area_init
+ into struct rtl_data. Remove recursive_call_emit and gimplified flags.
+ (current_function_returns_struct, current_function_returns_pcc_struct,
+ current_function_calls_setjmp, current_function_calls_alloca,
+ current_function_accesses_prior_frames,
+ current_function_calls_eh_return, current_function_is_thunk,
+ current_function_stdarg, current_function_profile,
+ current_function_limit_stack, current_function_uses_pic_offset_table,
+ current_function_uses_const_pool, current_function_has_nonlocal_label,
+ current_function_saves_all_registers,
+ current_function_has_nonlocal_goto,
+ current_function_has_asm_statement): Remove accesor macros.
+ * ra-conflict.c (global_conflicts): Update.
+ * tree-tailcall.c (suitable_for_tail_opt_p): Update.
+ (suitable_for_tail_call_opt_p): Update.
+ * builtins.c (expand_builtin_return_addr): Update.
+ (expand_builtin_setjmp_setup): Update.
+ (expand_builtin_nonlocal_goto): Update.
+ * final.c (final_start_function): Update.
+ (profile_function): Update.
+ (leaf_function_p): Update.
+ (only_leaf_regs_used): Update.
+ * df-scan.c (df_get_exit_block_use_set): Update.
+ * dojump.c (clear_pending_stack_adjust): Update.
+ * tree-stdarg.c (gate_optimize_stdarg): Update.
+ * gimple-low.c (lower_function_body): Update.
+ * global.c (compute_regsets): Update.
+ (global_alloc): Update.
+ * dwarf2out.c (dwarf2out_begin_prologue): Update.
+ * expr.c (expand_assignment): Update.
+ * dse.c (dse_step0): Update.
+ (dse_step1): Update.
+ * c-decl.c (store_parm_decls): Update.
+ * local-alloc.c (combine_regs): Update.
+ (find_free_reg): Update.
+ * function.c (assign_parms_augmented_arg_list): Update.
+ (assign_parm_find_data_types): Update.
+ (assign_parms): Update.
+ (allocate_struct_function): Update.
+ (expand_function_start): Update.
+ (expand_function_end): Update.
+ (get_arg_pointer_save_area): Update.
+ (thread_prologue_and_epilogue_insns): Update.
+ (rest_of_match_asm_constraints): Update.
+ * stor-layout.c (variable_size): Update.
+ * gcse.c (gcse_main): Update.
+ (bypass_jumps): Update.
+ * gimplify.c (gimplify_function_tree): Update.
+ * calls.c (emit_call_1): Update.
+ (expand_call): Update.
+ * bt-load.c (compute_defs_uses_and_gen): Update.
+ * except.c (sjlj_assign_call_site_values): Update.
+ (sjlj_emit_function_enter): Update.
+ (can_throw_external): Update.
+ (set_nothrow_function_flags): Update.
+ (expand_builtin_unwind_init): Update.
+ (expand_eh_return): Update.
+ (convert_to_eh_region_ranges): Update.
+ (output_function_exception_table): Update.
+ * emit-rtl.c (gen_tmp_stack_mem): Update.
+ * cfgexpand.c (expand_used_vars): Update.
+ (tree_expand_cfg): Update.
+ * cfgcleanup.c (rest_of_handle_jump): Update.
+ * explow.c (allocate_dynamic_stack_space): Update.
+ * varasm.c (assemble_start_function): Update.
+ (force_const_mem): Update.
+ (mark_constant_pool): Update.
+ * tree-optimize.c (tree_rest_of_compilation): Update.
+ * stack-ptr-mod.c (notice_stack_pointer_modification): Update.
+ * tree-cfg.c (notice_special_calls): Update.
+ (is_ctrl_altering_stmt): Update.
+ (tree_can_make_abnormal_goto): Update.
+ (tree_purge_dead_abnormal_call_edges): Update.
+ * config/alpha/predicates.md: Update.
+ * config/alpha/alpha.c (alpha_sa_mask): Update.
+ (alpha_sa_size): Update.
+ (alpha_does_function_need_gp): Update.
+ (alpha_expand_prologue): Update.
+ (alpha_start_function): Update.
+ (alpha_output_function_end_prologue): Update.
+ (alpha_expand_epilogue): Update.
+ * config/frv/frv.c (frv_stack_info): Update.
+ (frv_expand_epilogue): Update.
+ * config/s390/s390.c (s390_regs_ever_clobbered): Update.
+ (s390_register_info): Update.
+ (s390_frame_info): Update.
+ (s390_init_frame_layout): Update.
+ (s390_can_eliminate): Update.
+ (save_gprs): Update.
+ * config/spu/spu.c (spu_split_immediate): Update.
+ (need_to_save_reg): Update.
+ (spu_expand_prologue): Update.
+ (spu_expand_epilogue): Update.
+ * config/sparc/sparc.md: Update.
+ * config/sparc/sparc.c (eligible_for_return_delay): Update.
+ (sparc_tls_got): Update.
+ (legitimize_pic_address): Update.
+ (sparc_emit_call_insn): Update.
+ (sparc_expand_prologue): Update.
+ (output_return): Update.
+ (print_operand): Update.
+ (sparc_function_ok_for_sibcall): Update.
+ * config/sparc/sparc.h (EXIT_IGNORE_STACK): Update.
+ * config/m32r/m32r.md: Update.
+ * config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Update.
+ (m32r_compute_frame_size): Update.
+ (m32r_expand_prologue): Update.
+ (m32r_expand_epilogue): Update.
+ (m32r_legitimize_pic_address): Update.
+ * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Update.
+ * config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
+ * config/i386/i386.c (ix86_frame_pointer_required): Update.
+ (gen_push): Update.
+ (ix86_save_reg): Update.
+ (ix86_compute_frame_layout): Update.
+ (ix86_expand_prologue): Update.
+ (ix86_expand_epilogue): Update.
+ * config/sh/sh.c (output_stack_adjust): Update.
+ (calc_live_regs): Update.
+ (sh5_schedule_saves): Update.
+ (sh_expand_prologue): Update.
+ (sh_expand_epilogue): Update.
+ (sh_setup_incoming_varargs): Update.
+ (sh_allocate_initial_value): Update.
+ (sh_get_pr_initial_val): Update.
+ * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Update.
+ * config/sh/sh.md (label:): Update.
+ * config/avr/avr.c (out_movhi_mr_r): Update.
+ * config/crx/crx.h (enum): Update.
+ * config/xtensa/xtensa.h (along): Update.
+ * config/stormy16/stormy16.c Update.
+ (xstormy16_compute_stack_layout): Update.
+ * config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Update.
+ (fr30_expand_prologue): Update.
+ * config/cris/cris.c (cris_conditional_register_usage): Update.
+ (cris_reg_saved_in_regsave_area): Update.
+ (cris_initial_frame_pointer_offset): Update.
+ (cris_simple_epilogue): Update.
+ (cris_expand_prologue): Update.
+ (cris_expand_epilogue): Update.
+ (cris_expand_pic_call_address): Update.
+ (cris_asm_output_symbol_ref): Update.
+ (cris_asm_output_label_ref): Update.
+ * config/cris/cris.md Update.
+ * config/iq2000/iq2000.c (compute_frame_size): Update.
+ (iq2000_expand_epilogue): Update.
+ * config/mt/mt.h (save_direction): Update.
+ * config/mn10300/mn10300.c (mn10300_function_value): Update.
+ * config/ia64/ia64.c (ia64_compute_frame_size): Update.
+ (ia64_secondary_reload_class): Update.
+ * config/m68k/m68k.c (m68k_save_reg): Update.
+ (m68k_expand_prologue): Update.
+ (m68k_expand_epilogue): Update.
+ (legitimize_pic_address): Update.
+ * config/rs6000/rs6000.c (rs6000_got_register): Update.
+ (first_reg_to_save): Update.
+ (first_altivec_reg_to_save): Update.
+ (compute_vrsave_mask): Update.
+ (compute_save_world_info): Update.
+ (rs6000_stack_info): Update.
+ (spe_func_has_64bit_regs_p): Update.
+ (rs6000_ra_ever_killed): Update.
+ (rs6000_emit_eh_reg_restore): Update.
+ (rs6000_emit_allocate_stack): Update.
+ (rs6000_emit_prologue): Update.
+ (rs6000_emit_epilogue): Update.
+ (rs6000_output_function_epilogue): Update.
+ (output_profile_hook): Update.
+ (rs6000_elf_declare_function_name): Update.
+ * config/rs6000/rs6000.h (rs6000_args): Update.
+ * config/rs6000/rs6000.md: Update.
+ * config/mcore/mcore.c (mcore_expand_prolog): Update.
+ * config/arc/arc.c (arc_output_function_epilogue): Update.
+ * config/arc/arc.h (FRAME_POINTER_REQUIRED): Update.
+ * config/darwin.c (machopic_function_base_name): Update.
+ * config/score/score3.c (score3_compute_frame_size): Update.
+ (rpush): Update.
+ (rpop): Update.
+ (score3_epilogue): Update.
+ * config/score/score7.c (score7_compute_frame_size): Update.
+ (score7_prologue): Update.
+ (score7_epilogue): Update.
+ * config/score/score.h (FRAME_POINTER_REQUIRED): Update.
+ * config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
+ * config/arm/arm.c (use_return_insn): Update.
+ (require_pic_register): Update.
+ (arm_load_pic_register): Update.
+ (arm_compute_save_reg0_reg12_mask): Update.
+ (arm_compute_save_reg_mask): Update.
+ (thumb1_compute_save_reg_mask): Update.
+ (output_return_instruction): Update.
+ (arm_output_function_prologue): Update.
+ (arm_output_epilogue): Update.
+ (arm_get_frame_offsets): Update.
+ (arm_expand_prologue): Update.
+ (thumb_pushpop): Update.
+ (thumb_exit): Update.
+ (thumb1_expand_prologue): Update.
+ (thumb1_expand_epilogue): Update.
+ (arm_unwind_emit): Update.
+ (arm_output_fn_unwind): Update.
+ * config/arm/arm.h (FRAME_POINTER_REQUIRED): Update.
+ * config/arm/arm.md: Update.
+ * config/pa/pa.md: Update.
+ * config/pa/pa.c (legitimize_pic_address): Update.
+ (compute_frame_size): Update.
+ (hppa_expand_prologue): Update.
+ (hppa_expand_epilogue): Update.
+ (borx_reg_operand): Update.
+ * config/pa/pa.h (FRAME_POINTER_REQUIRED): Update.
+ (HARD_REGNO_RENAME_OK): Update.
+ * config/mips/mips.c (mips_global_pointer): Update.
+ (mips_save_reg_p): Update.
+ (mips_compute_frame_info): Update.
+ (mips_frame_pointer_required): Update.
+ (mips_expand_prologue): Update.
+ (mips_expand_epilogue): Update.
+ (mips_can_use_return_insn): Update.
+ (mips_reorg_process_insns): Update.
+ * config/v850/v850.c (compute_register_save_size): Update.
+ * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Update.
+ * config/mmix/mmix.c (along): Update.
+ (mmix_expand_epilogue): Update.
+ * config/bfin/bfin.c (legitimize_pic_address): Update.
+ (must_save_p): Update.
+ (stack_frame_needed_p): Update.
+ (add_to_reg): Update.
+ (bfin_expand_prologue): Update.
+ * stmt.c (expand_asm_operands): Update.
+ * reload1.c (reload): Update.
+ (init_elim_table): Update.
+
+2008-04-25 Bob Wilson <bob.wilson@acm.org>
+
+ * optabs.c (expand_float): Fix REG_EQUAL for UNSIGNED_FLOAT libcall.
+
+2008-04-25 H.J. Lu <hongjiu.lu@intel.com>
+
+ * config/i386/sse.md (mov<mode>): Replace SSEMODEI with
+ SSEMODE.
+ (*mov<mode>_internal): Likewise. Support V4SF and V2DF.
+ (mov<mode>): Removed.
+ (*movv4sf_internal): Likewise.
+ (*movv2df_internal): Likewise.
+
+2008-04-25 Pompapathi V Gadad <Pompapathi.V.Gadad@nsc.com>
+
+ * config.gcc (crx-*-elf): Remove deprecation.
+
+2008-04-25 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * config/i386/cygming-crtend.c (register_frame_ctor): Register
+ __gcc_deregister_frame with atexit.
+ (deregister_frame_dtor): Remove.
+
+2008-04-24 Nathan Froyd <froydnj@codesourcery.com>
+ Nathan Sidwell <nathan@codesourcery.com>
+
+ * config/rs6000/rs6000.opt (mspe): Remove Var property.
+ (misel): Likewise.
+ * config/rs6000/rs6000.h (rs6000_spe): Declare.
+ (rs6000_isel): Likewise.
+ * config/rs6000/rs6000.c (rs6000_spe): New variable.
+ (rs6000_isel): New variable.
+ (rs6000_handle_option): Handle OPT_mspe and OPT_misel.
+
+2008-04-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/35758
+ * c-common.c (handle_vector_size_attribute): Call
+ lang_hooks.types.reconstruct_complex_type instead of
+ reconstruct_complex_type.
+ * config/rs6000/rs6000.c (rs6000_handle_altivec_attribute): Likewise.
+ * config/spu/spu.c (spu_handle_vector_attribute): Likewise.
+ * langhooks.h (struct lang_hooks_for_types): Add
+ reconstruct_complex_type hook.
+ * langhooks-def.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
+ (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
+
+2008-04-24 Richard Guenther <rguenther@suse.de>
+
+ * c-common.h (check_builtin_function_arguments): Declare.
+ * c-common.c (validate_nargs): New function.
+ (check_builtin_function_arguments): Likewise.
+ * c-typeck.c (build_function_call): Call
+ check_builtin_function_arguments.
+ * builtins.c (fold_builtin_classify): Remove error reporting code.
+ (fold_builtin_unordered_cmp): Likewise.
+ (fold_builtin_1): Likewise.
+ (fold_builtin_n): Likewise.
+
+2008-04-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/36008
+ * fold-const.c (try_move_mult_to_index): If s == NULL, divide
+ the original op1, rather than delta by step.
+
+2008-04-22 Antoniu Pop <antoniu.pop@gmail.com>
+ Sebastian Pop <sebastian.pop@amd.com>
+
+ * tree-parloops.c (take_address_of, eliminate_local_variables_1,
+ eliminate_local_variables_stmt, eliminate_local_variables,
+ separate_decls_in_loop_name, separate_decls_in_loop_stmt,
+ separate_decls_in_loop, gen_parallel_loop): Make them work on a region
+ of code delimited by two edges in the CFG.
+ (separate_decls_in_loop_name): Renamed separate_decls_in_region_name.
+ (separate_decls_in_loop_stmt): Renamed separate_decls_in_region_stmt.
+ (separate_decls_in_loop): Renamed separate_decls_in_region. Isolate
+ the case of parallelisation of reductions.
+ (expr_invariant_in_region_p): New.
+
+ * tree-flow.h (gather_blocks_in_sese_region): Declared.
+ * tree-cfg.c (gather_blocks_in_sese_region): Extern.
+
+2008-04-24 Ira Rosen <irar@il.ibm.com>
+ Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/36034
+ * tree-vect-analyze.c (vect_analyze_group_access): SLP is
+ incapable of dealing with loads with gaps.
+
+2008-04-24 Rafael Espindola <espindola@google.com>
+
+ * tree-flow.h (vrp_evaluate_conditional): Change signature.
+ * tree-ssa-propagate.c (fold_predicate_in): Update call to
+ vrp_evaluate_conditional.
+ * tree-vrp.c (vrp_evaluate_conditional_warnv): Remove.
+ (vrp_evaluate_conditional): Split the cond argument.
+ (vrp_visit_cond_stmt): Use vrp_evaluate_conditional_warnv_with_ops.
+ (simplify_stmt_for_jump_threading): Update call to
+ vrp_evaluate_conditional.
+
+2008-04-24 Ira Rosen <irar@il.ibm.com>
+
+ PR tree-optimization/35982
+ * tree-vect-analyze.c (vect_check_interleaving): Check that the
+ interleaved data-refs are of the same type.
+
+2008-04-24 Danny Smith <dannysmith@users.net>
+
+ * c-format.c (check_format_info_main): Use strncmp rather than a
+ magic prefix to handle multichar length specs.
+ * config/i386/msformat-c.c (format_length_info ms_printf_length_specs):
+ Don't prefix "I64" and "I32" with '\0'.
+
+2008-04-24 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/36015
+ * config/i386/i386.c (init_cumulative_args): Don't pass anything
+ in registers for -m32 only if stdarg_p (fntype).
+
+2008-04-24 Uros Bizjak <ubizjak@gmail.com>
+
+ PR rtl-optimization/36006
+ * expmed.c (store_fixed_bit_field): Copy op0 rtx before moving
+ temp to op0 in order to avoid invalid rtx sharing.
+
+2008-04-23 Paolo Bonzini <bonzini@gnu.org>
+
+ * tree-cfg.c (verify_expr): Check with is_gimple_address. Don't
+ check TREE_INVARIANT.
+ * tree-gimple.c (is_gimple_address): New.
+ (is_gimple_invariant_address): Simplify using decl_address_invariant_p.
+ * tree-gimple.h (is_gimple_address): New.
+ * tree.h (decl_address_invariant_p): New.
+ * tree.c (make_node_stat): Don't set TREE_INVARIANT.
+ (build_string): Likewise.
+ (decl_address_invariant_p): New, from is_gimple_invariant_address.
+ (tree_invariant_p_1): Likewise.
+ (save_expr): Use it.
+ (tree_invariant_p): New.
+ (skip_simple_arithmetic): Use it.
+ (stabilize_reference_1): Use it.
+ (recompute_tree_invariant_for_addr_expr): Don't update TREE_INVARIANT,
+ simplify.
+ (build1_stat): Drop code to compute TREE_INVARIANT.
+ (build2_stat): Drop code to compute TREE_INVARIANT.
+ (build3_stat): Drop code to compute TREE_INVARIANT.
+ (build4_stat): Drop code to compute TREE_INVARIANT.
+ (build5_stat): Drop code to compute TREE_INVARIANT.
+ (build7_stat): Drop code to compute TREE_INVARIANT.
+ (merge_dllimport_decl_attributes): Don't mention TREE_INVARIANT.
+ * tree.h (struct tree_base): Remove invariant_flag.
+ (TREE_INVARIANT): Remove.
+ * builtins.c (build_string_literal): Don't set TREE_INVARIANT.
+ (fold_builtin_expect): Check TREE_CONSTANT.
+ * tree-ssa-ccp.c (fold_stmt_r): Adjust comment.
+ * c-tree.h (c_expr_to_decl): Drop third parameter.
+ * c-typeck.c (build_external_ref): Don't set TREE_INVARIANT.
+ (build_c_cast): Don't set TREE_INVARIANT.
+ (pop_init_level): Don't set TREE_INVARIANT.
+ (c_objc_common_truthvalue_conversion): Don't set TREE_INVARIANT.
+ * gimplify.c (gimplify_init_ctor_preeval): Add assertion, test
+ TREE_CONSTANT.
+ (gimplify_init_constructor): Don't set TREE_INVARIANT.
+ (gimplify_addr_expr): Adjust comment.
+ * tree-mudflap.c (mf_build_string):
+ * print-tree.c (print_node): Don't print TREE_INVARIANT.
+ * tree-nested.c (convert_nonlocal_reference): Adjust comment.
+ * c-common.c (fix_string_type): Don't set TREE_INVARIANT.
+ * langhooks-def.h (lhd_expr_to_decl): Drop third parameter.
+ * langhooks.c (lhd_expr_to_decl): Drop third parameter.
+ * langhooks.h (struct lang_hooks): Drop third parameter from
+ expr_to_decl.
+
+2008-04-23 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/27799
+ PR tree-optimization/32921
+ PR tree-optimization/32624
+ * tree-ssa-structalias.c (merge_smts_into): Only merge the
+ SMTs aliases and the tag itself into the solution.
+ * tree-ssa-alias.c (compute_flow_sensitive_aliasing): Do not
+ merge the points-to solution back into the SMT aliases.
+ (may_alias_p): Use alias_set_subset_of instead of
+ aliases_conflict_p. A pointer which points to
+ memory with alias set zero may access any variable.
+
+2008-04-23 Richard Guenther <rguenther@suse.de>
+
+ * alias.c (alias_set_subset_of): Correctly handle asking
+ if zero is a subset of an alias set with zero child.
+ * tree-ssa-alias.c (have_common_aliases_p): Simplify logic.
+ (compute_flow_insensitive_aliasing): Correctly walk all
+ pointers. Do not unnecessarily union sets.
+
+2008-04-23 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/36021
+ * c-common.c (handle_alloc_size_attribute): Use type_num_arguments.
+
+2008-04-22 Tomas Bily <tbily@suse.cz>
+
+ * tree-cfg.c (verify_expr): Check for NON_LVALUE_EXPR as
+ unreachable case.
+ * tree-vrp.c (extract_range_from_unary_expr): Removed unused
+ NON_LVALUE_EXPR.
+ * tree-ssa-threadedge.c (simplify_control_stmt_condition): Likewise.
+ * tree-ssa-structalias.c (get_constraint_for): Likewise.
+ * tree-inline.c (estimate_num_insns_1): Likewise.
+ * varasm.c (const_hash_1, compare_constant, copy_constant)
+ (compute_reloc_for_constant, output_addressed_constants): Likewise.
+ * emit-rtl.c (component_ref_for_mem_expr)
+ (set_mem_attributes_minus_bitpos): Likewise.
+ * expr.c (highest_pow2_factor, expand_expr_real_1, )
+ (is_aligning_offset): Likewise.
+ * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info): Likewise.
+ * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.
+ * dojump.c (do_jump): Likewise.
+ * builtins.c (get_pointer_alignment, get_memory_rtx)
+ (integer_valued_real_p, fold_builtin_next_arg): Likewise.
+ * tree-scalar-evolution.c (instantiate_parameters_1): Likewise.
+
+2008-04-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/36017
+ * builtins.c (expand_errno_check): Clear CALL_EXPR_TAILCALL before
+ expanding the library call.
+
+2008-04-22 Ian Lance Taylor <iant@google.com>
+
+ * fold-const.c (pointer_may_wrap_p): Call int_size_in_bytes rather
+ than size_in_bytes.
+
+2008-04-22 Pat Haugen <pthaugen@us.ibm.com>
+
+ * config/rs6000/rs6000.c (rs6000_register_move_cost): Increase cost
+ of LR/CTR moves for Power6.
+
+2008-04-22 Kenneth Zadeck <zadeck@naturalbridge.com>
+
+ PR middle-end/36003
+ * passes.c (init_optimization_passes): Remove
+ pass_fast_rtl_byte_dce.
+
+2008-04-22 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/29096
+ * config/i386/xmmintrin.h (_mm_cvtpi16_ps): Rearrange calls to
+ builtin functions to generate faster code.
+ (_mm_cvtpu16_ps): Ditto.
+ (_mm_cvtpi32x2_ps): Ditto.
+
+2008-04-22 Nick Clifton <nickc@redhat.com>
+
+ * common.opt (ftree-loop-distribution): Add Optimization
+ attribute.
+
+ * config/frv/frv.c (frv_stack_info): Use crtl instead of cfun.
+ (frv_expand_builtin_va_start): Likewise.
+
+ * config/arm/arm.c (thumb_find_work_register): Fix location of
+ argument register count.
+
+2008-04-22 Maxim Kuvyrkov <maxim@codesourcery.com>
+
+ Support scheduling for ColdFire V1 and V3 microarchitecture.
+ Improve scheduling of multiplication instructions.
+
+ * config/m68k/m68k.md (cpu): Add cfv1 and cfv3. Rename cf_v2 to cfv1.
+ (mac): New instruction attribute.
+ * config/m68k/m68k.c (override_options): Handle cfv1, cfv3 and mac.
+ (m68k_sched_mac): New variable.
+ (m68k_sched_attr_type2, m68k_sched_md_init_global): Update.
+ Handle cfv1 and cfv3.
+ (max_insn_size): New static variable.
+ (struct _sched_ib): New type.
+ (sched_ib): New static variable.
+ (sched_ib_size, sched_ib_filled, sched_ib_insn): Convert variables
+ to fields of 'struct _sched_ib sched_ib'. Update all uses.
+ (m68k_sched_variable_issue): Add modeling of cfv3 instruction buffer.
+ Update.
+ (m68k_sched_md_init_global, m68k_sched_md_finish_global,
+ m68k_sched_md_init, m68k_sched_md_finish): Handle cfv1 and cfv3. Init
+ new variables. Update.
+ (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
+ Add modeling of cfv3 instruction buffer. Update.
+ * config/m68k/m68k-protos.h (m68k_sched_mac): Declare.
+ * config/m68k/m68k.h (TUNE_CFV3): New macro.
+ * config/m68k/cf.md: Change substrings 'cf_v2' to 'cfv12' or 'cfv123'.
+ (cf_* reservations): Rename to cfv12 or cfv123 to indicate cores
+ a particular reservation applies to.
+ (type2): Reorganize attribute values. Rename alu to alu_reg,
+ alu_l to alu, move_l to omove. Join move to alu. Split mul
+ to mul_l and mul_w.
+ (cf_ib_*): Simplify description of instruction buffer.
+ (cf_ib_w0, cf_ib_w4, cf_ib_w5, cf_ib_w6): Remove.
+ (cf_mem): Split into cf_mem1 and cf_mem2.
+ (cf_v2_move_??): Rename to cfv12_alu_??.
+ (cf_v2_move_l_??): Rename to cfv12_omove_??.
+ (cf_v2_mul_??): Remove reservations.
+ (cfv12_mul_l_??, cfv12_mul_w_??, cfv12_mac_w_??, cfv12_mac_l_??,
+ cfv12_emac_??, cfv12_emac_w_i0): New reservations.
+ (cfv12_rts, cfv12_call, cfv12_bcc, cfv12_bra, cfv12_jmp): Move to
+ appropriate place.
+ (cfv3_alu_10, cfv3_omove_10, cfv3_alu_i0, cfv3_omove_i0, cfv3_alu_01,
+ cfv3_alu_0i, cfv3_alu_11, cfv3_omove_11, cfv3_alu_i1, cfv3_omove_i1,
+ cfv3_alu_1i, cfv3_omove_1i, cfv3_pea_11, cfv3_pea_i1, cfv3_mul_w_10,
+ cfv3_mul_l_10, cfv3_mul_w_i0, cfv3_mac_w_10, cfv3_mac_l_10,
+ cfv3_mac_w_i0, cfv3_emac_10, cfv3_emac_w_i0, cfv3_rts, cfv3_call,
+ cfv3_bcc, cfv3_bra, cfv3_jmp): New reservations.
+ (cfv3_*_1, cfv3_*_2, cfv3_*_3): New instruction reservations that are
+ expansions of the above reservations for instructions of sizes
+ 1, 2 and 3 words.
+
+2008-04-22 Maxim Kuvyrkov <maxim@codesourcery.com>
+
+ * rtl-factoring.c (collect_patterns_seqs): Handle CC0 targets.
+
+2008-04-21 Adam Nemet <anemet@caviumnetworks.com>
+
+ * coverage.c: Include tree-pass.h.
+ (coverage_counter_alloc): Print da_file_name to the dump file.
+
+2008-04-21 Kenneth Zadeck <zadeck@naturalbridge.com>
+
+ * sbitmap.c (sbitmap_range_empty_p): New function.
+ * sbitmap.h (sbitmap_range_empty_p): New function.
+ * bitmap.h: Now includes obstack.h.
+
+2008-04-21 Richard Sandiford <rsandifo@nildram.co.uk>
+ Kenneth Zadeck <zadeck@naturalbridge.com>
+
+ * dbgcnt.def (ra_byte_scan): Added.
+ * dbgcnt.c (dbg_cnt): Added code to print message to dump_file
+ when the last hit happens for a counter.
+ * timevar.def (TV_DF_BYTE_LR): New variable.
+ * tree-pass.h (pass_fast_rtl_byte_dce): New pass.
+ * passes.c (pass_fast_rtl_byte_dce): New pass.
+ * fwprop.c (update_df): Added mode to call df_ref_create.
+ Renamed DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
+ DF_REF_EXTRACT_OFFSET.
+ * df.h (DF_BYTE_LR, DF_BYTE_LR_BB_INFO, DF_BYTE_LR_IN,
+ DF_BYTE_LR_OUT, df_byte_lr): New macro.
+ (df_mm): New enum.
+ (df_ref_extract): Added mode field.
+ (DF_REF_WIDTH, DF_REF_OFFSET) Renamed to DF_REF_EXTRACT_WIDTH and
+ DF_REF_EXTRACT_OFFSET.
+ (DF_REF_EXTRACT_MODE): New macro.
+ (df_byte_lr_bb_info): New structure.
+ (df_print_byte_regset, df_compute_accessed_bytes,
+ df_byte_lr_add_problem, df_byte_lr_get_regno_start,
+ df_byte_lr_get_regno_len, df_byte_lr_simulate_defs,
+ df_byte_lr_simulate_uses,
+ df_byte_lr_simulate_artificial_refs_at_top,
+ df_byte_lr_simulate_artificial_refs_at_end,
+ df_compute_accessed_bytes): New function.
+ (df_ref_create): Add parameter.
+ (df_byte_lr_get_bb_info): New inline function.
+ * df-scan.c (df_ref_record, df_uses_record,
+ df_ref_create_structure): Added mode parameter.
+ (df_ref_create, df_notes_rescan, df_ref_record, df_def_record_1,
+ df_defs_record, df_uses_record, df_get_conditional_uses,
+ df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
+ df_entry_block_defs_collect, df_exit_block_uses_collect):
+ Added mode parameter to calls to df_ref_record, df_uses_record,
+ df_ref_create_structure.
+ (df_ref_equal_p, df_ref_compare): Added test for modes.
+ (df_ref_create_structure): Added code to set mode. Renamed
+ DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
+ DF_REF_EXTRACT_OFFSET.
+ * df-core.c (df_print_byte_regset): New function.
+ * df-byte-scan.c: New file.
+ * df-problems.c (df_rd_transfer_function): Removed unnecessary
+ calls to BITMAP_FREE.
+ (df_byte_lr_problem_data, df_problem problem_BYTE_LR): New structure.
+ (df_byte_lr_get_regno_start, df_byte_lr_get_regno_len,
+ df_byte_lr_set_bb_info, df_byte_lr_free_bb_info,
+ df_byte_lr_check_regs, df_byte_lr_expand_bitmap,
+ df_byte_lr_alloc, df_byte_lr_reset, df_byte_lr_bb_local_compute,
+ df_byte_lr_local_compute, df_byte_lr_init,
+ df_byte_lr_confluence_0, df_byte_lr_confluence_n,
+ df_byte_lr_transfer_function, df_byte_lr_free,
+ df_byte_lr_top_dump, df_byte_lr_bottom_dump,
+ df_byte_lr_add_problem, df_byte_lr_simulate_defs,
+ df_byte_lr_simulate_uses,
+ df_byte_lr_simulate_artificial_refs_at_top,
+ df_byte_lr_simulate_artificial_refs_at_end): New function.
+ * dce.c (byte_dce_process_block): New function.
+ (dce_process_block): au is now passed in rather than computed
+ locally. Changed loops that look at artificial defs to not look
+ for conditional or partial ones, because there never are any.
+ (fast_dce): Now is able to drive byte_dce_process_block or
+ dce_process_block depending on the kind of dce being done.
+ (rest_of_handle_fast_dce): Add parameter to fast_dce.
+ (rest_of_handle_fast_byte_dce): New function.
+ (rtl_opt_pass pass_fast_rtl_byte_dce): New pass.
+ * Makefile.in (df-byte-scan.o, debugcnt.o): Added dependencies.
+
+2008-04-21 Daniel Franke <franke.daniel@gmail.com>
+
+ PR fortran/35019
+ * gcc.h: Added fortran options that take arguments to
+ DEFAULT_SWITCH_TAKES_ARG and DEFAULT_WORD_SWITCH_TAKES_ARG
+ macros.
+
+2008-04-20 Eric Botcazou <ebotcazou@adacore.com>
+
+ * tree-sra.c (sra_walk_expr) <VIEW_CONVERT_EXPR>: Disable
+ scalarization if on the LHS and not a full access.
+
+2008-04-20 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ * Makefile.in (s-gtyp-input): Remove tmp-gi.list before writing it.
+
+2008-04-18 Rafael Espindola <espindola@google.com>
+
+ * tree-vrp.c (find_case_label_index): Fix the binary search.
+ (find_case_label_range): New.
+ (vrp_visit_switch_stmt): Use find_case_label_range.
+ (simplify_switch_using_ranges): Use find_case_label_range.
+
+2008-04-18 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gimplify.c (gimplify_modify_expr_rhs) <COND_EXPR>: Gimplify the LHS
+ using the is_gimple_lvalue predicate instead of is_gimple_min_lval.
+
+2008-04-18 Tom Tromey <tromey@redhat.com>
+
+ PR libcpp/15500:
+ * doc/cpp.texi (Implementation-defined behavior): Mention
+ -finput-charset.
+
+2008-04-18 Ian Lance Taylor <iant@google.com>
+
+ * fold-const.c (pointer_may_wrap_p): New static function.
+ (fold_comparison): Add another test for pointer overflow. Use
+ pointer_may_wrap_p to disable some false positives.
+
+2008-04-18 Kris Van Hees <kris.van.hees@oracle.com>
+
+ * c-common.c (CHAR16_TYPE, CHAR32_TYPE): New macros.
+ (fname_as_string): Match updated cpp_interpret_string prototype.
+ (fix_string_type): Support char16_t* and char32_t*.
+ (c_common_nodes_and_builtins): Add char16_t and char32_t (and
+ derivative) nodes. Register as builtin if C++0x.
+ (c_parse_error): Support CPP_CHAR{16,32}.
+ * c-common.h (RID_CHAR16, RID_CHAR32): New elements.
+ (enum c_tree_index) <CTI_CHAR16_TYPE, CTI_SIGNED_CHAR16_TYPE,
+ CTI_UNSIGNED_CHAR16_TYPE, CTI_CHAR32_TYPE, CTI_SIGNED_CHAR32_TYPE,
+ CTI_UNSIGNED_CHAR32_TYPE, CTI_CHAR16_ARRAY_TYPE,
+ CTI_CHAR32_ARRAY_TYPE>: New elements.
+ (char16_type_node, signed_char16_type_node, unsigned_char16_type_node,
+ char32_type_node, signed_char32_type_node, char16_array_type_node,
+ char32_array_type_node): New defines.
+ * c-lex.c (cb_ident): Match updated cpp_interpret_string prototype.
+ (c_lex_with_flags): Support CPP_CHAR{16,32} and CPP_STRING{16,32}.
+ (lex_string): Support CPP_STRING{16,32}, match updated
+ cpp_interpret_string and cpp_interpret_string_notranslate prototypes.
+ (lex_charconst): Support CPP_CHAR{16,32}.
+ * c-parser.c (c_parser_postfix_expression): Support CPP_CHAR{16,32}
+ and CPP_STRING{16,32}.
+
+2008-04-18 Paolo Bonzini <bonzini@gnu.org>
+
+ PR bootstrap/35457
+ * aclocal.m4: Regenerate.
+ * configure: Regenerate.
+
+2008-04-18 Jan Hubicka <jh@suse.cz>
+
+ * except.c (dw2_size_of_call_site_table,
+ sjlj_size_of_call_site_table): Use vector API for call_site_record.
+
+ * cgraphbuild.c (build_cgraph_edges): Update.
+ * tree-pass.h: Update comment.
+ * final.c (leaf_function_p): Update.
+ (leaf_renumber_regs): Update.
+ (rest_of_clean_state): Update.
+ * omp-low.c (expand_omp_parallel): Update.
+ * ipa-reference.c (analyze_function): Update.
+ * reorg.c (find_end_label): Update.
+ (optimize_skip): Update.
+ (fill_simple_delay_slots): Update.
+ (fill_simple_delay_slots): Update.
+ (make_return_insns): Update.
+ (dbr_schedule): Update.
+ * gimple-low.c (record_vars_into): Update.
+ * cfgbuild.c (make_edges): Update.
+ * function.c (assign_stack_local): Update.
+ (assign_parm_adjust_stack_rtl): Update.
+ (locate_and_pad_parm): Update.
+ (allocate_struct_function): Do not initialize stack_alignment_needed
+ and preferred_stack_boundary here.
+ (stack_protect_prologue): Update.
+ (stack_protect_epilogue): Update.
+ (expand_function_start): Initialize stack_alignment_needed,
+ preferred_stack_boundary and max_jumptable_ents.
+ (expand_function_end): Update.
+ (free_after_compilation): Do not NULLify epilogue_delay_list.
+ * function.h (struct rtl_data): Add stack_protect_guard,
+ stack_alignment_needed,
+ preferred_stack_boundary, epilogue_delay_list.
+ (struct function): Remove value_histograms, stack_alignment_needed,
+ preferred_stack_boundary, epilogue_delay_list, max_jumptable_ents,
+ last_label_uid,
+ unexpanded_var_list, stack_protect_guard.
+ (current_function_epilogue_delay_list): Remove.
+ * ipa-type-escape.c (analyze_function): Update.
+ * gimplify.c (pop_gimplify_context): Update comment.
+ * calls.c (expand_call): Update.
+ (emit_library_call_value_1): Update.
+ * except.c (set_nothrow_function_flags): Update.
+ * cfgexpand.c (get_decl_align_unit): Update.
+ (create_stack_guard): Update.
+ (estimated_stack_frame_size): Update.
+ (expand_used_vars): Update.
+ (tree_expand_cfg): Free histogram earliers, init expansion variables.
+ * explow.c (allocate_dynamic_stack_space): Update.
+ * tree-ssa-live.c (remove_unused_locals): Update.
+ * varasm.c (mark_constant_pool): Update.
+ * tree-inline.c (remap_decls): Update.
+ (initialize_cfun): Update.
+ (declare_return_variable): Update.
+ (inline_forbidden_p): Update.
+ (expand_call_inline): Update.
+ (declare_inline_vars): Update.
+ (tree_function_versioning): Update.
+ * tree-flow.h (value_histograms): New.
+ (VALUE_HISTOGRAMS): New macro.
+ * basic-block.h (control_flow_graph): Add max_jumptable_ents,
+ last_label_uid.
+ * tree-cfg.c (set_bb_for_stmt): Update.
+ (replace_by_duplicate_decl): Update.
+ (move_block_to_fn): Update.
+ (new_label_mapper): Update.
+ (dump_function_to_file): Update.
+ * ipa-struct-reorg.c (build_data_structure): Update.
+ * cfgrtl.c (print_rtl_with_bb): Update.
+ * reload1.c (reload): Update.
+ (reload): Update.
+ * config/i386/i386.c (setup_incoming_varargs_64,
+ ix86_compute_frame_layout): Update.
+ * config/arc/arc.c (arc_output_function_epilogue): Update.
+
+2008-04-18 Marius Strobl <marius@FreeBSD.org>
+
+ * gthr-posix.h (__gthread_active_p): Use the Solaris implementation
+ for FreeBSD as well.
+ * gthr-posix95.h: Likewise.
+
+2008-04-17 Richard Sandiford <rsandifo@nildram.co.uk>
+
+ PR rtl-optimization/35838
+ * dse.c (find_shift_sequence): Use subreg_lowpart_offset to work
+ out the byte offset of the first subreg.
+
+2008-04-17 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.md (addti3 splitter): Pass arrays of 3 operands
+ to split_ti instead of three separate calls with single member arrays.
+ (subti3 splitter): Ditto.
+ (adddi3 splitter): Ditto with split_di.
+ (subdi3 splitter): Ditto.
+ (negti2 splitter): Pass arrays of 2 operands to split_ti instead of
+ two separate calls with single member arrays. Swap match_dup
+ operands 1 and 2 to better fit into the array.
+ (negdi2 splitter): Ditto with split_di.
+ (movdfcc splitter): Pass arrays of 2 operands to split_di instead of
+ two separate calls with single member arrays. Swap match_dup operands
+ 6 and 7 to better fit into the array.
+
+2008-04-17 H.J. Lu <hongjiu.lu@intel.com>
+
+ * config/i386/i386.c (sse_builtin_type): New.
+ (bdesc_sse_args): Likewise.
+ (bdesc_sse_3arg): Removed.
+ (bdesc_2arg): Remove IX86_BUILTIN_AESKEYGENASSIST128.
+ (bdesc_1arg): Remove IX86_BUILTIN_ROUNDPD and
+ IX86_BUILTIN_ROUNDPS.
+ (ix86_init_mmx_sse_builtins): Handle bdesc_sse_args. Remove
+ bdesc_sse_3arg. Remove IX86_BUILTIN_ROUNDPD and
+ IX86_BUILTIN_ROUNDPS.
+ (ix86_expand_sse_4_operands_builtin): Removed.
+ (ix86_expand_sse_operands_builtin): New.
+ (ix86_expand_unop_builtin): Remove CODE_FOR_sse4_1_roundpd
+ and CODE_FOR_sse4_1_roundps.
+ (ix86_expand_builtin): Remove IX86_BUILTIN_AESKEYGENASSIST128.
+ Handle bdesc_sse_args. Remove bdesc_sse_3arg.
+
+2008-04-17 Alan Modra <amodra@bigpond.net.au>
+
+ PR target/35907
+ * config/rs6000/rs6000.c (rs6000_emit_epilogue): Restore vr and vrsave
+ regs before frame pop when needed. If use_backchain_to_restore_sp
+ then load backchain into a temp reg to restore vr and vrsave. Add
+ code to restore vr after frame pop if possible.
+
+2008-04-17 Richard Guenther <rguenther@suse.de>
+
+ * tree-vn.c (expressions_equal_p): Do not check type
+ equality or compatibility before calling operand_equal_p.
+ * fold-const.c (operand_equal_p): Check equivalence of
+ integer constants before bailing out due to signedness or
+ precision differences.
+ * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Ignore
+ spurious differences in type qualification. Ignore types
+ for COMPONENT_REFs at all.
+
+2008-04-17 Christian Bruel <christian.bruel@st.com>
+
+ * config/sh/sh.c (expand_cbranchdi4): Use original operands for
+ msw_skip comparison.
+
+2008-04-16 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/35739
+ * tree-nrv.c (tree_nrv): Don't optimize if result_type is GIMPLE
+ reg type.
+
+ PR tree-optimization/35899
+ * tree-inline.c (expand_call_inline): Use GIMPLE_STMT_OPERAND
+ rather than TREE_OPERAND.
+
+2008-04-16 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/35944
+ * config/i386/i386.md (fmodxf3): Copy operand 1 and operand 2 into
+ temporary registers. Change operand predicate to general_operand.
+ (remainderxf3): Ditto.
+
+2008-04-16 Richard Guenther <rguenther@suse.de>
+
+ * Makefile.in (tree-affine.o): Add $(FLAGS_H) dependency.
+ * tree-affine.c (aff_combination_expand): Look through some
+ conversions.
+
+2008-04-15 Doug Kwan <dougkwan@google.com>
+
+ * dwarf2asm.c (dw2_assemble_integer): Cast to unsigned HOST_WIDE_INT
+ for hex printing.
+ * tree-pretty-print.c (dump_generic_node): Ditto.
+ * final.c (output_addr_const): Ditto.
+ * dwarf2out.c (output_cfi): Ditto.
+ * c-pretty-print.c (pp_c_integer_constant): Ditto.
+ * print-rtl.c (print_rtx): Ditto.
+ * print-tree.c (print_node_brief, print_node): Ditto.
+ * c-common.c (match_case_to_enum_1): Ditto.
+ * sched-vis.c (print_value): Ditto.
+ * config/i386/i386.c (print_operand): Cast to long unsigned int
+ for hex printing.
+
+2008-04-15 Danny Smith <dannysmith@users.sourceforge.net>
+ * libgcc2.c [L_trampoline]: Remove unnecessary prototype for
+ MS Windows VirtualProtect function.
+
+2008-04-15 Jan Hubicka <jh@suse.cz>
+
+ * gengtype.c (write_root): Param_is argument is OK.
+ * expr.c (expand_expr_real_1): Update call of get_exception_*.
+ * function.h: Include varray.h
+ (rtl_eh): New stucture based on except.c one.
+ (call_site_record): New forward declaration and vector type.
+ * calls.c (emit_call_1): Do not call
+ note_current_region_may_contain_throw.
+ * except.c (eh_status): Remove cur_region, try_region since they are
+ unused.
+ Move filter, exc_ptr, ttype_data, ehspec_data, action_record_data and
+ exception_handler_label_map, ehr_stackadj, ehr_handler, ehr_label,
+ sjlj_fc, sjlj_exit_after to rth_eh in function.h.
+ Remove call_site_data_used, call_site_data_size.
+ Turn call_site_record into vector in function.h.
+ (note_current_region_may_contain_throw): Remove.
+ (get_exception_pointer, get_exception_filter): Do not take struct
+ function argument; update.
+ (add_ehl_entry, find_exception_handler_labels, ehspec_filter_hash,
+ add_ttypes_entry, add_ehspec_entry, assign_filter_values,
+ build_post_landing_pads, dw2_build_landing_pads,
+ sjlj_assign_call_site_values, sjlj_mark_call_sites,
+ sjlj_emit_function_enter, sjlj_emit_function_enter,
+ sjlj_emit_function_exit, sjlj_emit_dispatch_table,
+ sjlj_build_landing_pads, finish_eh_generation,
+ remove_exception_handler_label, remove_eh_handler,
+ maybe_remove_eh_handler, add_reachable_handler,
+ reachable_handlers, expand_builtin_eh_return, expand_eh_return,
+ add_action_record, collect_one_action_chain, add_call_site,
+ convert_to_eh_region_ranges, sjlj_size_of_call_site_table,
+ sjlj_output_call_site_table, output_function_exception_table,
+ * except.h (note_current_region_may_contain_throw): Remove
+ (get_exception_pointer, get_exception_filter): Do not take struct
+ function argument.
+ * Makefile.in (GTFILES): Put varargs before struct function.
+
+2008-04-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * tree-ssa-structalias.c (get_constraint_for_component_ref): Do not
+ punt for STRING_CST.
+ (get_constraint_for): Deal with STRING_CST here instead.
+
+2008-04-15 Richard Guenther <rguenther@suse.de>
+
+ * tree-ssa-propagate.c (substitute_and_fold): Substitute
+ statements in a basic-block with a backward walk. Do not
+ substitute into dead statements but instead remove those.
+
+2008-04-15 Richard Guenther <rguenther@suse.de>
+
+ * params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Set default
+ to zero, thus disable creation of SFTs.
+
+2008-04-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * tree-predcom.c (suitable_reference_p): Return false if the
+ reference can throw.
+
+2008-04-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/35751
+ * c-decl.c (finish_decl): If extern or static var has variable
+ size, set TREE_TYPE (decl) to error_mark_node.
+
+2008-04-15 Rafael Espindola <espindola@google.com>
+
+ * fold-const.c (tree_call_nonnegative_warnv_p): Remove local
+ variable arg1.
+
+2008-04-15 Richard Guenther <rguenther@suse.de>
+
+ * tree-ssa-sccvn.h (vn_reference_lookup): Adjust prototype.
+ * tree-ssa-sccvn.c (vn_reference_lookup): New parameter maywalk.
+ (visit_reference_op_load): Do walk vuse-vdef chains on
+ vn_reference_lookup.
+ (visit_reference_op_store): But do not here.
+ * tree-vn.c (vn_lookup): Do not walk vuse-vdef chains on
+ vn_reference_lookup.
+ (vn_lookup_with_vuses): But do so here.
+
+2008-04-14 Ian Lance Taylor <iant@google.com>
+
+ * fold-const.c (fold_overflow_warning): Remove assertion.
+
+2008-04-15 Ben Elliston <bje@au.ibm.com>
+
+ * config/alpha/alpha.c (alpha_initialize_trampoline): Remove temp,
+ temp1 local variables.
+
+2008-04-15 Zuxy Meng <zuxy.meng@gmail.com>
+
+ PR target/35661
+ * config/i386/winnt.c (i386_pe_section_type_flags): Mark
+ ".text.unlikely" section as executable.
+
+2008-04-14 James E. Wilson <wilson@tuliptree.org>
+
+ * config/ia64/ia64.c (rtx_needs_barrier): Handle
+ UNSPEC_FR_SQRT_RECIP_APPROX_RES.
+ * config/ia64/ia64.c (UNSPEC_FR_SQRT_RECIP_APPROX_RES): Define.
+ (divsi3_internal, divdi3_internal_lat, divdi3_internal_thr,
+ divsf3_internal_lat, sqrt_approx, sqrtsf2_internal_thr,
+ divdf3_internal_lat, sqrtdf2_internal_thr, divxf3_internal_lat,
+ divxf3_internal_thr, sqrtxf2_internal_thr, recip_approx): Use it.
+
+2008-04-14 Ian Lance Taylor <iant@google.com>
+
+ * flags.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Define.
+ * fold-const.c (fold_comparison): If appropriate, test
+ POINTER_TYPE_OVERFLOW_UNDEFINED, and issue an overflow warning.
+ (fold_binary): Test POINTER_TYPE_OVERFLOW_UNDEFINED when
+ reassociating a pointer type.
+ * doc/invoke.texi (Optimize Options): Document that
+ -fstrict-overflow applies to pointer wraparound.
+
+2008-04-13 Jan Hubicka <jh@suse.cz>
+
+ * m32.c (m32c_pushm_popm): Use crtl->retrun_rtx.
+
+2008-04-12 Andrew Pinski <pinskia@gmail.com>
+
+ * config/rs6000/rs6000.c (compute_save_world_info): Set lr_save_p if
+ we are going to "save the world".
+
+2008-04-13 Hans-Peter Nilsson <hp@axis.com>
+
+ * config/cris/cris.md ("*andhi_lowpart_non_v32", "*andhi_lowpart_v32")
+ ("*andqi_lowpart_non_v32", "*andqi_lowpart_v32"): Use "+" for the
+ operand 0 constraint, not "=".
+
+2008-04-11 James E. Wilson <wilson@tuliptree.org>
+
+ * system.h: Change ASSERT_CHECKING to ENABLE_ASSERT_CHECKING.
+
+2008-04-11 H.J. Lu <hongjiu.lu@intel.com>
+
+ * dse.c (record_store): Use HOST_BITS_PER_WIDE_INT instead
+ of size of positions_needed * CHAR_BIT.
+
+2008-04-11 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR middle-end/35897
+ * dse.c (store_info): Change positions_needed to unsigned
+ HOST_WIDE_INT.
+ (lowpart_bitmask): New.
+ (record_store): Cast to unsigned HOST_WIDE_INT for
+ positions_needed. Assert width <= size of positions_needed *
+ CHAR_BIT. Call lowpart_bitmask to initialize positions_needed.
+ (check_mem_read_rtx): Use unsigned HOST_WIDE_INT on mask. Call
+ lowpart_bitmask to set mask.
+
2008-04-11 Bernd Schmidt <bernd.schmidt@analog.com>
* config/bfin/constraints.md: New file.
2008-04-10 Rafael Espindola <espindola@google.com>
- * gcc/tree-vrp.c (extract_range_from_binary_expr): Don't handle
+ * tree-vrp.c (extract_range_from_binary_expr): Don't handle
TRUTH_ANDIF_EXPR or TRUTH_ORIF_EXPR.
(extract_range_from_expr): The same.
2008-04-02 Kai Tietz <kai.tietz@onevision.com>
* config.gcc: Add for x86_64-*-mingw* the t-crtfm to tbuild.
- * gcc/config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Add 8 byte
+ * config/i386/cygming.h (ASM_OUTPUT_DWARF_OFFSET): Add 8 byte
offsets for 64-bit mingw.
- * gcc/config/i386/i386.c (ix86_pass_by_reference): Correct calling
+ * config/i386/i386.c (ix86_pass_by_reference): Correct calling
abi for x86_64-pc-mingw.
2008-04-02 Richard Guenther <rguenther@suse.de>
2008-03-28 Nick Clifton <nickc@redhat.com>
+ PR target/31110
* config/mn10300/mn10300.c (mn10300_secondary_reload_class):
Return GENERAL_REGS for stack adjustment reloads.
2008-03-15 Bjoern Haase <bjoern.m.haase@web.de>
Anatoly Sokolov <aesok@post.ru>
- * gcc/gcc/config/avr/avr.c (avr_arch_types): Add avr6 entry.
+ * config/avr/avr.c (avr_arch_types): Add avr6 entry.
(avr_arch): Add ARCH_AVR6.
(avr_mcu_types): Add 'atmega2560' and 'atmega2561' entry.
(initial_elimination_offset): Initialize and use 'avr_pc_size'
(avr_assemble_integer): (Ditto.).
(avr_output_addr_vec_elt): (Ditto.).
(print_operand): Handle "!" code.
- * gcc/gcc/config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Add
+ * config/avr/avr.h (TARGET_CPU_CPP_BUILTINS): Add
__AVR_3_BYTE_PC__, __AVR_2_BYTE_PC__ and __AVR_HAVE_JMP_CALL__.
(AVR_HAVE_EIJMP_EICALL): Define.
(AVR_3_BYTE_PC): Redefine.
(LINK_SPEC): Add atmega2560 and atmega2561.
(CRT_BINUTILS_SPEC): Add atmega2560 (crtm2560.o) and atmega2561
(crtm2561.o).
- * gcc/gcc/config/avr/avr.md (call_insn): Use eicall instead of icall
+ * config/avr/avr.md (call_insn): Use eicall instead of icall
for 3 byte PC devices.
(call_value_insn): (Ditto.).
(*tablejump_enh): Use eijmp instead of ijmp for 3 byte PC devices.
(*tablejump): (Ditto.).
(*indirect_jump_avr6): Add insn.
(*tablejump_rjmp): Don't use for 3 byte PC devices.
- * gcc/gcc/config/avr/libgcc.S (__prologue_saves__): Use eijmp
+ * config/avr/libgcc.S (__prologue_saves__): Use eijmp
instead of ijmp for 3 byte PC devices.
(__tablejump2__): (Ditto.).
- * gcc/gcc/config/avr/t-avr (MULITLIB_OPTIONS): Add avr6 architecture.
+ * config/avr/t-avr (MULITLIB_OPTIONS): Add avr6 architecture.
(MULITLIB_DIRNAMES): (Ditto.).
(MULTILIB_MATCHES): Add atmega2560 and atmega2561 to list.