Skip to content

Commit

Permalink
2013-09-17 Andrew MacLeod <amacleod@redhat.com>
Browse files Browse the repository at this point in the history
	* tree-flow.h (ssa_undefined_value_p): Remove prototype.
	* tree-ssa.c (ssa_undefined_value_p): Move pass independent parts here.
	(warn_uninit, warn_uninitialized_vars, execute_early_warn_uninitialized,
	make_pass_early_warn_uninitialized): Move to tree-ssa-uninit.c.
	* tree-ssa-uninit.c (ssa_undefined_value_p): Move to tree-ssa.c
	(has_undefined_value_p): New.  Pass dependant parts of 
	ssa_undefined_value_p.
	(uninit_undefined_value_p): Use has_undefined_value_p.
	(warn_uninit, warn_uninitialized_vars, execute_early_warn_uninitialized,
	make_pass_early_warn_uninitialized): Move from tree-ssa.c
	* tree-ssa.h: Adjust prototypes

2013-09-17  Jan Hubicka  <jh@suse.cz>

	PR middle-end/58329
	* ipa-devirt.c (ipa_devirt): Be ready for symtab_nonoverwritable_alias
	to return NULL.
	* ipa.c (function_and_variable_visibility): Likewise.
	* ipa-profile.c (ipa_profile): Likewise.

2013-09-17  Bernd Edlinger  <bernd.edlinger@hotmail.de>

	PR ipa/58398
	* cgraph.c (cgraph_function_body_availability): Check for ifunc
	attribute, and don't inline the resolver in this case.

2013-09-17  Teresa Johnson  <tejohnson@google.com>

	* coverage.c (get_coverage_counts): Add missing newline.

2013-09-17  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

	PR tree-optimization/58088
	* fold-const.c (mask_with_trailing_zeros): New function.
	(fold_binary_loc): Make sure we don't recurse infinitely
	when the X in (X & C1) | C2 is a tree of the form (Y * K1) & K2.
	Use mask_with_trailing_zeros where appropriate.

2013-09-17  Yuri Rumyantsev  <ysrumyan@gmail.com>

	* config/i386/i386.c (distance_agu_use_in_bb) : Proper initialization
	of 'prev' var to get better distance estimation.

2013-09-17  Eric Botcazou  <ebotcazou@adacore.com>

	* tree-inline.h (struct copy_body_data): Add transform_parameter.
	* tree-inline.c (is_parameter_of): New predicate.
	(remap_gimple_op_r): Do not propagate TREE_THIS_NOTRAP on MEM_REF if
	a parameter has been remapped.
	(copy_tree_body_r): Likewise on INDIRECT_REF and MEM_REF.
	(optimize_inline_calls): Initialize transform_parameter.
	(copy_gimple_seq_and_replace_locals): Likewise.
	(tree_function_versioning): Likewise.
	(maybe_inline_call_in_expr): Likewise.

2013-09-17  Nick Clifton  <nickc@redhat.com>

	* config/msp430/msp430-protos.h: Add prototypes for new functions.
	* config/msp430/msp430.c (msp430_preserve_reg_p): Add support for
	interrupt handlers.
	(is_attr_func): New function.
	(msp430_is_interrupt_func): New function.
	(is_naked_func): New function.
	(is_reentrant_func): New function.
	(is_critical_func): New function.
	(msp430_start_function): Add annotations for function attributes.
	(msp430_attr): New function.
	(msp430_attribute_table): New.
	(msp430_function_section): New function.
	(TARGET_ASM_FUNCTION_SECTION): Define.
	(msp430_builtin): New enum.
	(msp430_init_builtins): New function.
	(msp430_builtin_devl): New function.
	(msp430_expand_builtin): New function.
	(TARGET_INIT_BUILTINS): Define.
	(TARGET_EXPAND_BUILTINS): Define.
	(TARGET_BUILTIN_DECL): Define.
	(msp430_expand_prologue): Add support for naked, interrupt,
	critical and reentrant functions.
	(msp430_expand_epilogue): Likewise.
	(msp430_print_operand): Handle 'O' character.
	* config/msp430/msp430.h (TARGET_CPU_CPP_BUILTINS): Define
	NO_TRAMPOLINES.
	* config/msp430/msp430.md (unspec): Add UNS_DINT, UNS_EINT,
	UNS_PUSH_INTR, UNS_POP_INTR, UNS_BIC_SR, UNS_BIS_SR.
	(pushm): Use a 'n' rather than an 'i' constraint.
	(msp_return): Add generation of the interrupt return instruction.
	(disable_interrupts): New pattern.
	(enable_interrupts): New pattern.
	(push_intr_state): New pattern.
	(pop_intr_state): New pattern.
	(bic_SR): New pattern.
	(bis_SR): New pattern.
	* doc/extend.texi: Document MSP430 function attributes and builtin
	functions.

2013-09-17  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/58432
	* tree-loop-distribution.c (tree_loop_distribution): Also
	scan PHIs for outside loop uses and seed a partition from them.

2013-09-17  Bin Cheng  <bin.cheng@arm.com>

	* gimple-ssa-strength-reduction.c (backtrace_base_for_ref): New.
	(restructure_reference): Call backtrace_base_for_ref.

2013-09-17  Alan Modra  <amodra@gmail.com>

	PR target/57589
	* config/rs6000/driver-rs6000.c (elf_platform): Revert 2013-06-11 patch.

2013-09-16  DJ Delorie  <dj@redhat.com>

	* config/rl78/rl78.c (rl78_asm_file_start): Specify alternate
	vregs location for RL78/G10.
	(rl78_expand_prologue): Avoid SEL on G10.
	(rl78_expand_epilogue): Likewise.
	(rl78_peep_movhi_p): Can't move a constant to memory in HImode.
	* config/rl78/rl78.h (TARGET_CPU_CPP_BUILTINS): Define
	__RL78_G10__ when appropriate.
	(ASM_SPEC): Pass -mg10 along to the assembler.
	* config/rl78/rl78.md (sel_rb): Disable for G10.
	* config/rl78/rl78.opt: Add -mg10 option.
	* config/rl78/t-rl78: Add -mg10 multilib.

2013-09-16  Xinliang David Li  <davidxl@google.com>

	* tree-if-conv.c (main_tree_if_conversion): Check new flag.
	* omp-low.c (omp_max_vf): Ditto.
	(expand_omp_simd): Ditto.
	* tree-vectorizer.c (vectorize_loops): Ditto.
	(gate_vect_slp): Ditto.
	(gate_increase_alignment): Ditto.
	* tree-ssa-pre.c (inhibit_phi_insertion): Ditto.
	* tree-ssa-loop.c (gate_tree_vectorize): Ditto.
	(gate_tree_vectorize): Name change.
	(tree_vectorize): Ditto.
	(pass_vectorize::gate): Call new function.
	(pass_vectorize::execute): Ditto.
	opts.c: O3 default setting change.
	(finish_options): Check new flag.
	* doc/invoke.texi: Document new flags.
	* common.opt: New flags.

2013-09-16  Andreas Schwab  <schwab@linux-m68k.org>

	* doc/tm.texi.in (Cond Exec Macros): Remove node.
	(Condition Code): Don't reference it.
	* doc/tm.texi: Regenerate.

2013-09-16  Vladimir Makarov  <vmakarov@redhat.com>

	PR middle-end/58418
	* lra-constraints.c (undo_optional_reloads): Consider all optional
	reload even if it did not get a hard reg.

2013-09-16  Teresa Johnson  <tejohnson@google.com>

	* dumpfile.c (dump_loc): Remove newline emission.
	* tree-vect-data-refs.c (vect_lanes_optab_supported_p): Add newline
	emission to dump_printf_loc calls where missing.
	(vect_mark_for_runtime_alias_test): Ditto.
	(vect_analyze_data_ref_dependence): Ditto.
	(vect_analyze_data_ref_dependences): Ditto.
	(vect_slp_analyze_data_ref_dependence): Ditto.
	(vect_slp_analyze_data_ref_dependences): Ditto.
	(vect_compute_data_ref_alignment): Ditto.
	(vect_update_misalignment_for_peel): Ditto.
	(vect_verify_datarefs_alignment): Ditto.
	(vector_alignment_reachable_p): Ditto.
	(vect_get_data_access_cost): Ditto.
	(vect_enhance_data_refs_alignment): Ditto.
	(vect_find_same_alignment_drs): Ditto.
	(vect_analyze_data_refs_alignment): Ditto.
	(vect_analyze_group_access): Ditto.
	(vect_analyze_data_ref_access): Ditto.
	(vect_analyze_data_ref_accesses): Ditto.
	(vect_prune_runtime_alias_test_list): Ditto.
	(vect_analyze_data_refs): Ditto.
	(vect_create_addr_base_for_vector_ref): Ditto.
	(vect_create_data_ref_ptr): Ditto.
	(vect_grouped_store_supported): Ditto.
	(vect_grouped_load_supported): Ditto.
	* value-prof.c (check_counter): Ditto.
	(check_ic_target): Ditto.
	* tree-vect-patterns.c (vect_recog_dot_prod_pattern): Ditto.
	(vect_recog_widen_mult_pattern): Ditto.
	(vect_recog_widen_sum_pattern): Ditto.
	(vect_recog_over_widening_pattern): Ditto.
	(vect_recog_widen_shift_pattern): Ditto.
	(vect_recog_rotate_pattern): Ditto.
	(vect_recog_vector_vector_shift_pattern): Ditto.
	(vect_recog_divmod_pattern): Ditto.
	(vect_recog_mixed_size_cond_pattern): Ditto.
	(vect_recog_bool_pattern): Ditto.
	(vect_pattern_recog_1): Ditto.
	(vect_pattern_recog): Ditto.
	* tree-vect-loop.c (vect_determine_vectorization_factor): Ditto.
	(vect_is_simple_iv_evolution): Ditto.
	(vect_analyze_scalar_cycles_1): Ditto.
	(vect_get_loop_niters): Ditto.
	(vect_analyze_loop_1): Ditto.
	(vect_analyze_loop_form): Ditto.
	(vect_analyze_loop_operations): Ditto.
	(vect_analyze_loop_2): Ditto.
	(vect_analyze_loop): Ditto.
	(report_vect_op): Ditto.
	(vect_is_slp_reduction): Ditto.
	(vect_is_simple_reduction_1): Ditto.
	(vect_get_known_peeling_cost): Ditto.
	(vect_estimate_min_profitable_iters): Ditto.
	(vect_model_reduction_cost): Ditto.
	(vect_model_induction_cost): Ditto.
	(get_initial_def_for_induction): Ditto.
	(vect_create_epilog_for_reduction): Ditto.
	(vectorizable_reduction): Ditto.
	(vectorizable_induction): Ditto.
	(vectorizable_live_operation): Ditto.
	(vect_loop_kill_debug_uses): Ditto.
	(vect_transform_loop): Ditto.
	* tree-vect-stmts.c (vect_mark_relevant): Ditto.
	(vect_stmt_relevant_p): Ditto.
	(process_use): Ditto.
	(vect_mark_stmts_to_be_vectorized): Ditto.
	(vect_model_simple_cost): Ditto.
	(vect_model_promotion_demotion_cost): Ditto.
	(vect_model_store_cost): Ditto.
	(vect_get_store_cost): Ditto.
	(vect_model_load_cost): Ditto.
	(vect_get_load_cost): Ditto.
	(vect_init_vector_1): Ditto.
	(vect_get_vec_def_for_operand): Ditto.
	(vect_finish_stmt_generation): Ditto.
	(vectorizable_call): Ditto.
	(vectorizable_conversion): Ditto.
	(vectorizable_assignment): Ditto.
	(vectorizable_shift): Ditto.
	(vectorizable_operation): Ditto.
	(vectorizable_store): Ditto.
	(vectorizable_load): Ditto.
	(vectorizable_condition): Ditto.
	(vect_analyze_stmt): Ditto.
	(vect_transform_stmt): Ditto.
	(vect_is_simple_use): Ditto.
	* tree-vect-loop-manip.c (slpeel_make_loop_iterate_ntimes): Ditto.
	(vect_can_advance_ivs_p): Ditto.
	(vect_update_ivs_after_vectorizer): Ditto.
	(vect_do_peeling_for_loop_bound): Ditto.
	(vect_gen_niters_for_prolog_loop): Ditto.
	(vect_update_inits_of_drs): Ditto.
	(vect_create_cond_for_alias_checks): Ditto.
	* tree-vect-slp.c (vect_get_and_check_slp_defs): Ditto.
	(vect_build_slp_tree_1): Ditto.
	(vect_supported_load_permutation_p): Ditto.
	(vect_analyze_slp_instance): Ditto.
	(vect_analyze_slp): Ditto.
	(vect_make_slp_decision): Ditto.
	(vect_detect_hybrid_slp): Ditto.
	(vect_bb_vectorization_profitable_p): Ditto.
	(vect_slp_analyze_bb_1): Ditto.
	(vect_update_slp_costs_according_to_vf): Ditto.
	(vect_get_mask_element): Ditto.
	(vect_transform_slp_perm_load): Ditto.
	(vect_schedule_slp_instance): Ditto.
	(vect_schedule_slp): Ditto.
	(vect_slp_transform_bb): Ditto.
	* profile.c (read_profile_edge_counts): Ditto.
	(compute_branch_probabilities): Ditto.
	* coverage.c (get_coverage_counts): Ditto.

2013-09-16  Diego Novillo  <dnovillo@google.com>

	* tree-core.h: Add missing comment lines from refactoring
	of tree.h.

2013-09-16  Jan Hubicka  <jh@suse.cz>

	* gimple-fold.c (can_refer_decl_in_current_unit_p): Do not accept
	abstract functions; for static functions check the presence
	of body.

2013-09-16  James Greenhalgh  <james.greenhalgh@arm.com>

	* config/aarch64/aarch64-simd-builtins.def (fma): New.
	* config/aarch64/aarch64-simd.md
	(aarch64_mla_elt<mode>): New.
	(aarch64_mla_elt_<vswap_width_name><mode>): Likewise.
	(aarch64_mls_elt<mode>): Likewise.
	(aarch64_mls_elt_<vswap_width_name><mode>): Likewise.
	(aarch64_fma4_elt<mode>): Likewise.
	(aarch64_fma4_elt_<vswap_width_name><mode>): Likewise.
	(aarch64_fma4_elt_to_128v2df): Likewise.
	(aarch64_fma4_elt_to_64df): Likewise.
	(fnma<mode>4): Likewise.
	(aarch64_fnma4_elt<mode>): Likewise.
	(aarch64_fnma4_elt_<vswap_width_name><mode>): Likewise.
	(aarch64_fnma4_elt_to_128v2df): Likewise.
	(aarch64_fnma4_elt_to_64df): Likewise.
	* config/aarch64/iterators.md (VDQSF): New.
	* config/aarch64/arm_neon.h
	(vfm<as><sdq>_lane<q>_f<32, 64>): Convert to C implementation.
	(vml<sa><q>_lane<q>_<fsu><16, 32, 64>): Likewise.

2013-09-16  James Greenhalgh  <james.greenhalgh@arm.com>

	* config/aarch64/aarch64-simd.md (aarch64_mul3_elt<mode>): New.
	(aarch64_mul3_elt_<vswap_width_name><mode>): Likewise.
	(aarch64_mul3_elt_to_128df): Likewise.
	(aarch64_mul3_elt_to_64v2df): Likewise.
	* config/aarch64/iterators.md (VEL): Also handle DFmode.
	(VMUL): New.
	(VMUL_CHANGE_NLANES) Likewise.
	(h_con): Likewise.
	(f): Likewise.
	* config/aarch64/arm_neon.h
	(vmul<q>_lane<q>_<suf><16,32,64>): Convert to C implementation.

2013-09-16  James Greenhalgh  <james.greenhalgh@arm.com>

	* config/aarch64/arm_neon.h
	(vcvtx_high_f32_f64): Fix parameters.

2013-09-16  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
	    Uros Bizjak  <ubizjak@gmail.com>

	* config/alpha.c: Include tree-ssanames.h.

2013-09-16  Richard Biener  <rguenther@suse.de>

	* tree-loop-distribution.c (enum rdg_dep_type): Add control_dd.
	(dot_rdg_1): Handle control_dd.
	(create_edge_for_control_dependence): New function.
	(create_rdg_edges): Add control dependences if asked for.
	(build_rdg): Likewise.
	(generate_loops_for_partition): If there are not necessary
	control stmts remove all their dependencies.
	(collect_condition_stmts, rdg_flag_loop_exits): Remove.
	(distribute_loop): Pass on control dependences.
	(tree_loop_distribution): Compute control dependences and remove
	restriction on number of loop nodes.

2013-09-16  Jakub Jelinek  <jakub@redhat.com>

	* ipa-prop.c (ipa_compute_jump_functions_for_edge): Return early
	for internal calls.

2013-09-16  Richard Sandiford  <rdsandiford@googlemail.com>

	* cse.c (try_const_anchors): Punt on CC modes.

2013-09-15  Jan-Benedict Glaw  <jbglaw@lug-owl.de>

	* config/vax/constraints.md (T): Add missing CONSTANT_P check.

2013-09-14  John David Anglin  <danglin@gcc.gnu.org>

	PR target/58382
	* config/pa/pa.c (pa_expand_prologue): Change mode in gen_rtx_POST_INC
	calls to word_mode.

2013-09-14  Iain Sandoe  <iain@codesourcery.com>

	PR target/48094
	* config/darwin.c (darwin_objc2_section): Note if ObjC Metadata is
	seen.
	(darwin_objc1_section): Likewise.
	(darwin_file_end): Emit Image Info section when required.

2013-09-14  Jan Hubicka  <jh@suse.cz>

	* tree-into-ssa.c (gate_into_ssa): New.
	(pass_data_build_ssa): Use it.
	* cgraph.h (expand_thunk): Update prototype.
	* cgraphunit.c (analyze_function): Expand thunks early.
	(expand_thunk): Fix DECL_CONTEXT of reust_decl;
	build proper cgraph; set in_ssa_p; clear bogus TREE_ASM_WRITTEN;
	set lowered flag; do not add new function.
	(assemble_thunks_and_aliases): Update.
	* tree-ssa.c (gate_init_datastructures): New gate.
	(pass_data_init_datastructures): Use it.

2013-09-14  Iain Sandoe  <iain@codesourcery.com>

	PR target/58269
	* config/i386/i386.c (ix86_function_arg_regno_p): Make Darwin use the
	xmm register set described in the psABI.

2013-09-13  Evgeny Gavrin <e.gavrin@samsung.com>

	* dwarf2out.c (should_emit_struct_debug): Add check
	for type_decl variable is not NULL.

2013-09-13  Jacek Caban  <jacek@codeweavers.com>

	* config.gcc: Use new winnt-c.c target hooks
	* config/t-winnt: New file
	* config/winnt-c.c: New file
	* doc/tm.texi.in: Document new hook
	* doc/tm.texi: Regenerated

2013-09-13  Jan Hubicka  <jh@suse.cz>

	PR middle-end/58094
	* ipa-inline.c (check_callers): New function.
	(check_caller_edge): Remove.
	(want_inline_function_to_all_callers_p): Also permit alises that are
	called dirrectly.
	(inline_to_all_callers): Terminate the walk when devirtualization
	introduce new calls.

2013-09-13  Jan Hubicka  <jh@suse.cz>

	* ipa-inline-analysis.c (struct growth_data): Add node.
	(do_estimate_growth_1): Fix detection of recursion.

2013-09-13  Jakub Jelinek  <jakub@redhat.com>

	PR tree-optimization/58392
	* tree-cfg.c (move_sese_region_to_fn): Rename loop variable
	to avoid shadowing of outer loop variable.  If
	saved_cfun->has_simduid_loops or saved_cfun->has_force_vect_loops,
	replace_by_duplicate_decl simduid of loops that have it set and
	set dest_cfun->has_simduid_loops and/or
	dest_cfun->has_force_vect_loops.
	* omp-low.c (build_outer_var_ref): Call maybe_lookup_decl_in_outer_ctx
	instead of maybe_lookup_decl.
	* tree-inline.c (copy_loops): Change blocks_to_copy argument to id.
	Use id->blocks_to_copy instead of blocks_to_copy.  Adjust recursive
	call.  Copy over force_vect and copy and remap simduid.  Set
	cfun->has_simduid_loops and/or cfun->has_force_vect_loops.
	(copy_cfg_body): Remove blocks_to_copy argument.  Use
	id->blocks_to_copy instead of blocks_to_copy.  Adjust copy_loops
	caller.  Don't set cfun->has_simduid_loops and/or
	cfun->has_force_vect_loops here.
	(copy_body): Remove blocks_to_copy argument.  Adjust copy_cfg_body
	caller.
	(expand_call_inline, tree_function_versioning): Adjust copy_body
	callers.

2013-09-13  Martin Jambor  <mjambor@suse.cz>

	PR bootstrap/58388
	* ipa-prop.c (try_make_edge_direct_simple_call): Be less strict in
	the assert if the edge was a speculative one.

2013-09-13  Richard Biener  <rguenther@suse.de>

	* tree-data-ref.h (known_dependences_p): Move here ...
	* tree-loop-distribution.c (known_dependences_p): ... from here.
	(dump_rdg_component, debug_rdg_component): Remove.
	(dump_rdg): Adjust.
	(generate_loops_for_partition): Use gimple_uid instead of
	relying on matching stmt visit order.
	(rdg_build_partitions): Take starting stmt vector.
	(ldist_gen): Merge into ...
	(distribute_loop): ... this function.  Do not compute starting
	vertices vector.
	* tree-cfg.c (gimple_duplicate_bb): Copy UID for PHIs.

2013-09-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

	* config/arm/arm.md (arm_cmpsi_insn): Split rI alternative.
	Set type attribute correctly. Set predicable_short_it attribute.
	(cmpsi_shiftsi): Remove %? from output template.

2013-09-13  Richard Biener  <rguenther@suse.de>

	* tree-loop-distribution.c (struct rdg_component,
	rdg_defs_used_in_other_loops_p, free_rdg_components,
	rdg_build_components): Remove.
	(stmts_from_loop): Do not record virtual PHIs.
	(generate_loops_for_partition): Skip virtual PHIs.
	(build_rdg_partition_for_component): Rename to ...
	(build_rdg_partition_for_vertex): ... this and adjust.
	(rdg_build_partitions): Take a vector of starting vertices
	instead of components.  Remove unnecessary leftover handling.
	(ldist_gen): Do not build components or record other stores.
	(distribute_loop): Do not distribute loops containing stmts
	with side-effects.

2013-09-13  Christian Bruel  <christian.bruel@st.com>

	PR target/58314
	* config/sh/sh.md (mov<mode>_reg_reg): Allow memory reloads.

2013-09-13  Kai Tietz  <ktietz@redhat.com>

	* config.gcc: Separate cases for mingw and cygwin targets,
	and add 64-bit cygwin target case.

	* config/i386/winnt-cxx.c (i386_pe_type_dllexport_p): Don't
	dll-export inline-functions.
	* config/i386/winnt.c (i386_pe_determine_dllexport_p): Likewise.


2013-09-13  Jeff Law  <law@redhat.com>

	PR middle-end/58387
	Revert:
	2013-09-06  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (cprop_into_successor_phis): Also propagate
	edge implied equivalences into successor phis.

2013-09-12  DJ Delorie  <dj@redhat.com>

	* config/rl78/rl78-virt.md: Change from | to \; for asm line
	separators.

2013-09-12  Brooks Moses  <bmoses@google.com>

	PR driver/42955
	* Makefile.in: Do not install driver binaries in $(target)/bin.

2013-09-12  DJ Delorie  <dj@redhat.com>

	* config/rl78/rl78.opt (mrelax): New.
	* config/rl78/rl78.h (ASM_SPEC): New, pass on -mrelax to gas.
	* config/rl78/rl78.h (LINK_SPEC): New, pass on -mrelax to ld.

	* config/rl78/rl78.c (rl78_expand_prologue): Use AX to copy
	between SP and FP.
	(rl78_expand_epilogue): Likewise.

2013-09-12  Vladimir Makarov  <vmakarov@redhat.com>

	PR middle-end/58335
	* lra-eliminations.c (remove_reg_equal_offset_note): New.
	(eliminate_regs_in_insn): Rewrite frame pointer to hard frame
	pointer elimination with using remove_reg_equal_offset_note.

2013-09-12  DJ Delorie  <dj@redhat.com>

	* config/msp430/: New port.
	* config.gcc (msp430): Added.
	* doc/invoke.texi: Document MSP430 options.
	* doc/install.texi: Document msp430-elf
	* doc/md.texi: Document msp430-elf
	* doc/contrib.texi: Document msp430-elf

	* cfgexpand.c (expand_debug_expr): Avoid sign-extending SImode to
	PSImode.

2013-09-12  Martin Jambor  <mjambor@suse.cz>

	PR ipa/58389
	* ipa-prop.c (remove_described_reference): Give up if the edge in the
	reference descriptor is NULL.
	(ipa_edge_removal_hook): If owning a reference descriptor, set its
	edge to NULL.

2013-09-12  Andrew MacLeod  <amacleod@redhat.com>

	* tree-flow.h (FREE_SSANAMES): Move to tree-ssanames.c
	(SSANAMES, MODIFIED_NORETURN_CALLS, DEFAULT_DEFS, ptr_info_def,
	num_ssa_names, ssa_name): Move to tree-ssanames.h + prototypes.
	* tree-flow-inline.h (make_ssa_name, copy_ssa_name, duplicate_ssa_name,
	make_temp_ssa_name): move to tree-ssanames.h
	* tree-ssa-alias.h: Move prototype.
	* tree-ssa.h: Include tree-ssanames.h.
	* tree-ssanames.c (FREE_SSANAMES): Move to here.
	* tree-ssanames.h: New.  Move items from tree-flow*.h
	* Makefile.in (tree-ssanames.h): Add to tree-ssanames.o and GTFILES.

2013-09-12  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/58404
	* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also
	propagate non-invariant addresses into dereferences wrapped
	in component references.

2013-09-12  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/58402
	* passes.def: Move pass_late_warn_uninitialized later.

2013-09-12  Andrew MacLeod  <amacleod@redhat.com>

	* tree-ssa.h: New.  Move content from tree-flow.h and
	tree-flow-inline.h.
	* tree-flow.h (_edge_var_map, edge_var_map_vector): Move to tree-ssa.h.
	Move prototypes belonging to tree-ssa.c.
	* tree-flow-inline.h (redirect_edge_var_map_def,
	redirect_edge_var_map_result, redirect_edge_var_map_location): Move to
	tree-ssa.h.
	* gimple.h: Adjust prototypes.
	* tree-ssa.c (useless_type_conversion_p, types_compatible_p): Move
	to...
	* gimple.c (useless_type_conversion_p, types_compatible_p): Here.
	* tree.h: Move prototype to tree-ssa.h.
	* gengtype.c (open_base_files): Replace tree-flow.h with tree-ssa.h.
	* Makefile.in: (TREE_SSA_H, TREE_FLOW_H): Adjust dependencies.
	* alias.c, asan.c, builtins.c, calls.c, cfgexpand.c, cfghooks.c,
	cfgloop.c, cfgloopmanip.c, cgraph.c, cgraphbuild.c, cgraphclones.c,
	cgraphunit.c, dse.c, except.c, expr.c, final.c, fold-const.c,
	ggc-page.c, gimple-fold.c, gimple-iterator.c, gimple-low.c,
	gimple-pretty-print.c, gimple-ssa-strength-reduction.c,
	gimple-streamer-in.c, gimple-streamer-out.c, gimple.c, gimplify.c,
	graphite-blocking.c, graphite-clast-to-gimple.c,
	graphite-dependences.c, graphite-interchange.c,
	graphite-optimize-isl.c, graphite-poly.c, graphite-scop-detection.c,
	graphite-sese-to-poly.c, graphite.c, ipa-cp.c, ipa-inline-analysis.c,
	ipa-inline-transform.c, ipa-inline.c, ipa-prop.c, ipa-pure-const.c,
	ipa-reference.c, ipa-split.c, ipa-utils.c,
	loop-init.c, lto-cgraph.c, lto-section-in.c, lto-section-out.c,
	lto-streamer-in.c, lto-streamer-out.c, lto-streamer.c, omp-low.c,
	passes.c, predict.c, print-tree.c, profile.c, sese.c, targhooks.c,
	tracer.c, trans-mem.c, tree-call-cdce.c, tree-cfg.c, tree-cfgcleanup.c,
	tree-chrec.c, tree-complex.c, tree-data-ref.c, tree-dfa.c, tree-eh.c,
	tree-emutls.c, tree-if-conv.c, tree-inline.c, tree-into-ssa.c,
	tree-loop-distribution.c, tree-mudflap.c, tree-nested.c, tree-nrv.c,
	tree-object-size.c, tree-optimize.c, tree-outof-ssa.c, tree-parloops.c,
	tree-phinodes.c, tree-predcom.c, tree-pretty-print.c, tree-profile.c,
	tree-scalar-evolution.c, tree-sra.c, tree-ssa*.c, tree-stdarg.c,
	tree-streamer-in.c, tree-switch-conversion.c, tree-tailcall.c,
	tree-vect-data-refs.c, tree-vect-generic.c, tree-vect-loop-manip.c,
	tree-vect-loop.c, tree-vect-patterns.c, tree-vect-slp.c,
	tree-vect-stmts.c, tree-vectorizer.c, tree-vrp.c, tsan.c,
	value-prof.c, var-tracking.c,
	varpool.c, vtable-verify.c: Replace tree-flow.h with tree-ssa.h

2013-09-12  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/58396
	* tree-loop-distribution.c (create_rdg_edges): Free unused DDRs.
	(build_rdg): Take a loop-nest parameter, fix memleaks.
	(distribute_loop): Compute loop-nest here and pass it to build_rdg.

2013-09-12  Yuri Rumyantsev  <ysrumyan@gmail.com>

	* config/i386/x86-tune.def: Turn on X86_TUNE_AVOID_MEM_OPND_FOR_CMOVE
	for SLM.

2013-09-12  Cameron McInally  <cameron.mcinally@nyu.edu>

	* doc/extend.texi: Fix errors in x86 FMA builtin naming.
	The FMA instruction names should have a 'v' prefix.

2013-09-12  Richard Biener  <rguenther@suse.de>

	* tree-loop-distribution.c (dot_rdg_1): Make graph prettier.
	(dot_rdg): Use popen instead of system in optional code.
	(remaining_stmts, upstream_mem_writes): Remove global bitmaps.
	(already_processed_vertex_p): Adjust.
	(has_anti_or_output_dependence, predecessor_has_mem_write,
	mark_nodes_having_upstream_mem_writes, has_upstream_mem_writes,
	rdg_flag_uses): Remove.
	(rdg_flag_vertex): Simplify.
	(rdg_flag_vertex_and_dependent): Rely on a correct RDG and
	remove recursion.
	(build_rdg_partition_for_component): Process the first vertex
	of a component only.
	(ldist_gen): Do not compute remaining_stmts or upstream_mem_writes.

2013-09-12  Alan Modra  <amodra@gmail.com>

	* config/rs6000/rs6000.c (toc_relative_expr_p): Use add_cint_operand.

2013-09-11  DJ Delorie  <dj@redhat.com>
	    Nick Clifton  <nickc@redhat.com>

	* config/rl78/predicates.md (rl78_cmp_operator_signed): New.
	(rl78_stack_based_mem): New.
	* config/rl78/constraints.md (Iv08): New.
	(Iv16): New.
	(Iv24): New.
	(Is09): New.
	(Is17): New.
	(Is25): New.
	(ISsi): New.
	(IShi): New.
	(ISqi): New.
	* config/rl78/rl78-expand.md (movqi): Reject more SUBREG operands.
	(movhi): Likewise.
	(movsi): Change from expand to insn-and-split.
	(ashrsi3): Clobber AX.
	(lshrsi3): New.
	(ashlsi3): New.
	(cbranchsi4): New.
	* config/rl78/rl78.md (CC_REG): Fix.
	(addsi3): Allow memory and immediate operands.
	(addsi3_internal): Split into...
	(addsi3_internal_virt): ...new, and ...
	(addsi3_internal_real): ...new.
	(subsi): New.
	(subsi3_internal_virt): New.
	(subsi3_internal_real): New.
	(mulsi3): Add memory operand.
	(mulsi3_rl78): Likewise.
	(mulsi3_g13): Likewise.
	* config/rl78/rl78-real.md (cbranchqi4_real_signed): New.
	(cbranchqi4_real): Add more constraint options.
	(cbranchhi4_real): Expand pattern.
	(cbranchhi4_real_signed): New.
	(cbranchhi4_real_inverted): New.
	(cbranchsi4_real_lt): New.
	(cbranchsi4_real_ge): New.
	(cbranchsi4_real_signed): New.
	(cbranchsi4_real): New.
	(peephole2): New.
	* config/rl78/rl78-virt.md (ashrsi3_virt): Add custom cases for
	constant shifts.
	(lshrsi3_virt): Likewise.
	(ashlsi3_virt): Likewise.
	(cbranchqi4_virt_signed): New.
	(cbranchhi4_virt_signed): New.
	(cbranchsi4_virt): New.
	* config/rl78/rl78.c: Whitespace fixes throughout.
	(move_elim_pass): New.
	(pass_data_rl78_move_elim): New.
	(pass_rl78_move_elim): New.
	(make_pass_rl78_move_elim): New.
	(rl78_devirt_info): Run devirt earlier.
	(rl78_move_elim_info): New.
	(rl78_asm_file_start): Register it.
	(rl78_split_movsi): New.
	(rl78_as_legitimate_address): Allow virtual base registers when
	appropriate.
	(rl78_addr_space_convert): Remove spurious debug stuff.
	(rl78_print_operand_1): Add z,s,S,r,E modifiers.
	(rl78_print_operand): More cases for not printing '#'.
	(rl78_expand_compare): Remove most of the logic.
	(content_memory): New.
	(clear_content_memory): New.
	(get_content_index): New.
	(get_content_name): New.
	(display_content_memory): New.
	(update_content): New.
	(record_content): New.
	(already_contains): New.
	(insn_ok_now): Re-recog insns with virtual registers.
	(add_postponed_content_update): New.
	(process_postponed_content_update): New.
	(gen_and_emit_move): New.
	(transcode_memory_rtx): Record new location content.
	Use gen_and_emit_move.
	(force_into_acc): New.
	(move_to_acc): Use gen_and_emit_move.
	(move_from_acc): Likewise.
	(move_acc_to_reg): Likewise.
	(move_to_x): Likewise.
	(move_to_hl): Likewise.
	(move_to_de): Likewise.
	(rl78_alloc_physical_registers_op1): Record location content.
	(has_constraint): New.
	(rl78_alloc_physical_registers_op2): Record location content.
	Optimize use of HL.
	(rl78_alloc_physical_registers_ro1): Likewise.
	(rl78_alloc_physical_registers_cmp): Likewise.
	(rl78_alloc_physical_registers_umul): Likewise.
	(rl78_alloc_address_registers_macax): New.
	(rl78_alloc_physical_registers): Initialize and set location
	content memory as needed.
	(rl78_reorg): Make sure split2 is called.
	(rl78_rtx_costs): New.

2013-09-11  Richard Sandiford  <rdsandiford@googlemail.com>

	* simplify-rtx.c (simplify_unary_operation_1): Use simplify_gen_binary
	for (not (neg ...)) and (neg (not ...)) cases.

2013-09-11  Richard Biener  <rguenther@suse.de>

	PR middle-end/58377
	* passes.def: Split critical edges before late uninit warning passes.
	* tree-cfg.c (pass_split_crit_edges): Implement clone method.

2013-09-11  Jakub Jelinek  <jakub@redhat.com>

	PR tree-optimization/58385
	* fold-const.c (build_range_check): If both low and high are NULL,
	use omit_one_operand_loc to preserve exp side-effects.

2013-09-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

	* config/arm/arm.md (arm_shiftsi3): New alternative l/l/M.

2013-09-11  Richard Biener  <rguenther@suse.de>

	* tree-data-ref.c (dump_rdg_vertex, debug_rdg_vertex,
	dump_rdg_component, debug_rdg_component, dump_rdg, debug_rdg,
	dot_rdg_1, dot_rdg, rdg_vertex_for_stmt, create_rdg_edge_for_ddr,
	create_rdg_edges_for_scalar, create_rdg_edges, create_rdg_vertices,
	stmts_from_loop, known_dependences_p, build_empty_rdg,
	build_rdg, free_rdg, rdg_defs_used_in_other_loops_p): Move ...
	* tree-loop-distribution.c: ... here.
	* tree-data-ref.h (struct rdg_vertex, RDGV_STMT, RDGV_DATAREFS,
	RDGV_HAS_MEM_WRITE, RDGV_HAS_MEM_READS, RDG_STMT, RDG_DATAREFS,
	RDG_MEM_WRITE_STMT, RDG_MEM_READS_STMT, enum rdg_dep_type,
	struct rdg_edge, RDGE_TYPE, RDGE_LEVEL, RDGE_RELATION): Move ...
	* tree-loop-distribution.c: ... here.
	* tree-loop-distribution.c: Include gimple-pretty-print.h.
	(struct partition_s): Add loops member.
	(partition_alloc, partition_free, rdg_flag_uses, rdg_flag_vertex,
	rdg_flag_vertex_and_dependent, rdg_flag_loop_exits,
	build_rdg_partition_for_component, rdg_build_partitions): Adjust.

2013-09-11  Alexander Ivchenko  <alexander.ivchenko@intel.com>
	    Maxim Kuznetsov  <maxim.kuznetsov@intel.com>
	    Sergey Lega  <sergey.s.lega@intel.com>
	    Anna Tikhonova  <anna.tikhonova@intel.com>
	    Ilya Tocar  <ilya.tocar@intel.com>
	    Andrey Turetskiy  <andrey.turetskiy@intel.com>
	    Ilya Verbin  <ilya.verbin@intel.com>
	    Kirill Yukhin  <kirill.yukhin@intel.com>
	    Michael Zolotukhin  <michael.v.zolotukhin@intel.com>

	* config/i386/constraints.md (k): New.
	(Yk): Ditto.
	* config/i386/i386.c (const regclass_map): Add new mask registers.
	(dbx_register_map): Ditto.
	(dbx64_register_map): Ditto.
	(svr4_dbx_register_map): Ditto.
	(ix86_conditional_register_usage): Squash mask registers if AVX512F is
	disabled.
	(ix86_preferred_reload_class): Disable constants for mask registers.
	(ix86_secondary_reload): Do spill of mask register using 32-bit insn.
	(ix86_hard_regno_mode_ok): Support new mask registers.
	(x86_order_regs_for_local_alloc): Ditto.
	* config/i386/i386.h (FIRST_PSEUDO_REGISTER): Update.
	(FIXED_REGISTERS): Add new mask registers.
	(CALL_USED_REGISTERS): Ditto.
	(REG_ALLOC_ORDER): Ditto.
	(VALID_MASK_REG_MODE): New.
	(FIRST_MASK_REG): Ditto.
	(LAST_MASK_REG): Ditto.
	(reg_class): Add MASK_EVEX_REGS, MASK_REGS.
	(MAYBE_MASK_CLASS_P): New.
	(REG_CLASS_NAMES): Add MASK_EVEX_REGS, MASK_REGS.
	(REG_CLASS_CONTENTS): Ditto.
	(MASK_REGNO_P): New.
	(ANY_MASK_REG_P): Ditto.
	(HI_REGISTER_NAMES): Add new mask registers.
	* config/i386/i386.md (MASK0_REG, MASK1_REG, MASK2_REG, MASK3_REG,
	MASK4_REG, MASK5_REG, MASK6_REG, MASK7_REG): Constants for new
	mask registers.
	(attribute "type"): Add mskmov, msklog.
	(attribute "length_immediate"): Support them.
	(attribute "memory"): Ditto.
	(attribute "prefix_0f"): Ditto.
	(*movhi_internal): Support new mask registers.
	(*movqi_internal): Ditto.
	(define_split): Split out clobber pattern is a logic
	insn on mask registers.
	(*k<logic><mode>): New.
	(*andhi_1): Extend to support mask regs.
	(*andqi_1): Extend to support mask regs.
	(kandn<mode>): New.
	(define_split): Split and-not to and and not if operands
	are not mask regs.
	(*<code><mode>_1): Separate HI mode to new pattern...
	(*<code>hi_1): This.
	(*<code>qi_1): Extend to support mask regs.
	(kxnor<mode>): New.
	(kortestzhi): Ditto.
	(kortestchi): Ditto.
	(kunpckhi): Ditto.
	(*one_cmpl<mode>2_1): Remove HImode and handle it...
	(*one_cmplhi2_1): ...Here, now with mask registers support.
	(*one_cmplqi2_1): Support new mask registers.
	(HI/QImode arithmetics splitter): Don't split if mask registers
	are used.
	(HI/QImode not splitter): Ditto.
	* config/i386/predicated.md (mask_reg_operand): New.
	(general_reg_operand): Ditto.

2013-09-11  Alexander Ivchenko  <alexander.ivchenko@intel.com>

	* doc/invoke.texi: Document fxsr, xsave and xsaveopt options.
	* doc/extend.texi: Document fxsr, xsave and xsaveopt builtins.

2013-09-10  Jeff Law  <law@redhat.com>

	PR tree-optimization/58380
	* tree-ssa-threadupdate.c (thread_block): Recognize another case
	of threading through a buried loop header.

	* tree-ssa-threadedge.c (thread_around_empty_blocks): Correct
	return value for single successor case.

2013-09-10  Jan Hubicka  <jh@suse.cz>

	* ipa-devirt.c (ipa_devirt): Enable with LTO.

2013-09-10  Richard Earnshaw  <rearnsha@arm.com>

	PR target/58361
	* arm/vfp.md (combine_vcvt_f32_<FCVTI32typename>): Fix pattern to
	support conditional execution.
	(combine_vcvt_f64_<FCVTI32typename>): Likewise.

2013-09-10  Vladimir Makarov  <vmakarov@redhat.com>

	* lra.c (lra): Clear lra_optional_reload_pseudos before every
	constraint pass.
	* lra-constraints.c (curr_insn_transform): Switch on optional reloads.
	Check destination too to check move insn.
	(undo_optional_reloads): Add check that the original peudo did not
	changed its allocation and the optional reload was inherited on last
	inheritance pass.  Break loop after deciding to keep optional reload.
	(lra_undo_inheritance): Add check that inherited pseudo still in
	memory.

2013-09-10  James Greenhalgh  <james.greenhalgh@arm.com>

	* config/aarch64/aarch64.md (generic_sched): New.
	* config/aarch64/aarch64-generic.md (load): Make conditional
	on generic_sched attribute.
	(nonload): Likewise.

2013-09-10  Jan Hubicka  <jh@suse.cz>

	* lto-cgraph.c: Include ipa-utils.h.
	(compute_ltrans_boundary): Also add possible targets into the boundary.

2013-09-10  Jan Hubicka  <jh@suse.cz>

	* gimple-fold.c (gimple_get_virt_method_for_binfo): Pass real
	VAR_DECL of vtable rather than full expression.

2013-09-10  Jan Hubicka  <jh@suse.cz>
	    Paolo Carlini  <paolo.carlini@oracle.com>

	* cgraphunit.c (analyze_functions): Save input_location, set it
	to UNKNOWN_LOCATION and restore it at the end.

2013-09-10  Martin Jambor  <mjambor@suse.cz>

	* ipa-cp.c (propagate_constants_topo): Do not ignore SCC
	represented by a thunk.

2013-09-10  Jeff Law  <law@redhat.com>

	PR tree-optimization/58343
	* tree-ssa-threadupdate.c (thread_block): Identify and disable
	jump threading requests through loop headers buried in the middle
	of a jump threading path.

	* tree-ssa-threadedge.c (thread_around_empty_blocks): Fix thinko
	in return value/type.

2013-09-10  Jakub Jelinek  <jakub@redhat.com>

	PR rtl-optimization/58365
	* cfgcleanup.c (merge_memattrs): Also clear MEM_READONLY_P
	resp. MEM_NOTRAP_P if they differ, or set MEM_VOLATILE_P if
	it differs.

2013-09-10  Richard Biener  <rguenther@suse.de>

	* tree-data-ref.h (build_rdg): Drop all parameters but loop.
	* tree-data-ref.c (create_rdg_vertices): Collect all data
	references, signal failure to the caller, use data-ref API.
	(build_rdg): Compute data references only once.  Maintain lifetime
	of data references and data dependences from within RDG.
	(free_rdg): Free dependence relations.
	* tree-loop-distribution.c (rdg_flag_uses): Drop weird code
	inventing extra dependences.
	(distribute_loop): Update for RDG API changes.

2013-09-10  Kai Tietz  <ktietz@redhat.com>

	* doc/invoke.texi (fms-extensions): Document changed
	behavior for ms-abi targets.
	* config/i386/i386.c (ix86_option_override_internal):
	Set default value of option -fms-extension for ms-abi targets.

2013-09-10  Michael Zolotukhin  <michael.v.zolotukhin@gmail.com>

	* config/i386/i386.c (ix86_expand_movmem): Fix epilogue generation.

2013-09-10  Alan Modra  <amodra@gmail.com>

	PR target/58330
	* config/rs6000/rs6000.md (bswapdi2_64bit): Disable for volatile mems.

2013-09-10  Alan Modra  <amodra@gmail.com>

	* config/rs6000/predicates.md (add_cint_operand): New.
	(reg_or_add_cint_operand, small_toc_ref): Use add_cint_operand.
	* config/rs6000/rs6000.md (largetoc_high_plus): Restrict offset
	using add_cint_operand.
	(largetoc_high_plus_aix): Likewise.

2013-09-09  Jakub Jelinek  <jakub@redhat.com>

	PR tree-optimization/58364
	* tree-ssa-reassoc.c (init_range_entry): For BIT_NOT_EXPR on
	BOOLEAN_TYPE, only invert in_p and continue with arg0 if
	the current range can't be an unconditional true or false.

2013-09-09  James Greenhalgh  <james.greenhalgh@arm.com>

	* config/aarch64/arm_neon.h (vrsqrte_f64): Fix parameter type.

2013-09-09  Uros Bizjak  <ubizjak@gmail.com>

	* ipa-prop.c (ipa_modify_call_arguments): Initialize deref_align.

2013-09-09  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/43452
	* doc/invoke.texi (-Wdelete-incomplete): Document it.

2013-09-09  Ian Bolton  <ian.bolton@arm.com>

	* config/aarch64/aarch64.c (aarch64_preferred_reload_class): Return
	NO_REGS for immediate that can't be moved directly into FP_REGS.

2013-09-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

	* config/aarch64/aarch64.c (aarch64_select_cc_mode): Return CC_SWP for
	comparison with negated operand.
	* config/aarch64/aarch64.md (compare_neg<mode>): Match canonical
	RTL form.

2013-09-09  Richard Biener  <rguenther@suse.de>

	PR middle-end/58326
	* cfgloopmanip.c (fix_bb_placements): When fixing the placement
	of a subloop record all its block as affecting loop-closed SSA form.

2013-09-09  Richard Sandiford  <rdsandiford@googlemail.com>

	* expmed.c (lshift_value): Take an unsigned HOST_WIDE_INT instead
	of an rtx/bitpos pair.
	(store_fixed_bit_field): Update accordingly.

2013-09-09  Richard Sandiford  <rdsandiford@googlemail.com>

	* asan.c (asan_emit_stack_protection): Use gen_int_mode instead of
	GEN_INT.
	* builtins.c (expand_errno_check): Likewise.
	* dwarf2cfi.c (init_return_column_size): Likewise.
	* except.c (sjlj_mark_call_sites): Likewise.
	* expr.c (move_by_pieces_1, store_by_pieces_2): Likewise.
	* lra-constraints.c (emit_inc): Likewise.
	* ree.c (combine_set_extension): Likewise.
	* regmove.c (fixup_match_2): Likewise.
	* reload1.c (inc_for_reload): Likewise.

2013-09-09  Richard Sandiford  <rdsandiford@googlemail.com>

	* combine.c (simplify_set, expand_field_assignment, extract_left_shift)
	(force_to_mode, simplify_shift_const_1, simplify_comparison):
	Use gen_int_mode with the mode of the associated simplify_* call.
	* explow.c (probe_stack_range, anti_adjust_stack_and_probe): Likewise.
	* expmed.c (expand_shift_1): Likewise.
	* function.c (instantiate_virtual_regs_in_insn): Likewise.
	* loop-iv.c (iv_number_of_iterations): Likewise.
	* loop-unroll.c (unroll_loop_runtime_iterations): Likewise.
	* simplify-rtx.c (simplify_binary_operation_1): Likewise.

2013-09-09  Richard Sandiford  <rdsandiford@googlemail.com>

	* asan.c (asan_clear_shadow): Use gen_int_mode with the mode
	of the associated expand_* call.
	(asan_emit_stack_protection): Likewise.
	* builtins.c (round_trampoline_addr): Likewise.
	* explow.c (allocate_dynamic_stack_space, probe_stack_range): Likewise.
	* expmed.c (expand_smod_pow2, expand_sdiv_pow2, expand_divmod)
	(emit_store_flag): Likewise.
	* expr.c (emit_move_resolve_push, push_block, emit_single_push_insn_1)
	(emit_push_insn, optimize_bitfield_assignment_op, expand_expr_real_1):
	Likewise.
	* function.c (instantiate_virtual_regs_in_insn): Likewise.
	* ifcvt.c (noce_try_store_flag_constants): Likewise.
	* loop-unroll.c (unroll_loop_runtime_iterations): Likewise.
	* modulo-sched.c (generate_prolog_epilog): Likewise.
	* optabs.c (expand_binop, widen_leading, expand_doubleword_clz)
	(expand_ctz, expand_ffs, expand_unop): Likewise.

2013-09-09  Richard Sandiford  <rdsandiford@googlemail.com>

	* alias.c (addr_side_effect_eval): Use gen_int_mode with the mode
	of the associated gen_rtx_* call.
	* caller-save.c (init_caller_save): Likewise.
	* combine.c (find_split_point, make_extraction): Likewise.
	(make_compound_operation): Likewise.
	* dwarf2out.c (mem_loc_descriptor): Likewise.
	* explow.c (plus_constant, probe_stack_range): Likewise.
	* expmed.c (expand_mult_const): Likewise.
	* expr.c (emit_single_push_insn_1, do_tablejump): Likewise.
	* reload1.c (init_reload): Likewise.
	* valtrack.c (cleanup_auto_inc_dec): Likewise.
	* var-tracking.c (adjust_mems): Likewise.
	* modulo-sched.c (sms_schedule): Likewise, but use gen_rtx_GT
	rather than gen_rtx_fmt_ee.

2013-09-09  Jan Hubicka  <jh@suse.cz>

	PR middle-end/58294
	* value-prof.c (gimple_ic): Copy also abnormal edges.

2013-09-09  Richard Sandiford  <rdsandiford@googlemail.com>

	* asan.c (asan_shadow_cst): Use gen_int_mode.

2013-09-08  Jan Hubicka  <jh@suse.cz>

	* ipa-profile.c: Add toplevel comment.
	(ipa_propagate_frequency_1): Be more conservative when profile is read.
	(contains_hot_call_p): New function.
	(ipa_propagate_frequency): Set frequencies based on counts when
	profile is read.
	* predict.c (compute_function_frequency): Use PROFILE_READ gueard for
	profile; do not tamper with profile after inlining if it is read.

2013-09-08  Jan Hubicka  <jh@suse.cz>

	* ipa-prop.c (try_make_edge_direct_simple_call): Do not special case
	speculative edges.

2013-09-08  Jan Hubicka  <jh@suse.cz>

	* ipa.c (walk_polymorphic_call_targets): Fix redirection before IPA
	summary generation.

2013-09-08  Jeff Law  <law@redhat.com>

	PR bootstrap/58340
	* tree-ssa-threadedge.c (thread_across_edge): Fix initialization
	of 'found'.

2013-09-08  Andi Kleen  <ak@linux.intel.com>

	* tree-inline.c (estimate_num_insns): Limit asm cost to 1000.

2013-09-08  Jan Hubicka  <jh@suse.cz>

	* ipa.c (walk_polymorphic_call_targets): Fix inliner summary update.

2013-09-08  Richard Sandiford  <rdsandiford@googlemail.com>

	* ira.c (update_equiv_regs): Only call set_paradoxical_subreg
	for non-debug insns.
	* lra.c (new_insn_reg): Take the containing insn as a parameter.
	Only modify lra_reg_info[].biggest_mode if it's non-debug insn.
	(collect_non_operand_hard_regs, add_regs_to_insn_regno_info): Update
	accordingly.

2013-09-08  Jan Hubicka  <jh@suse.cz>

	* cgraphunit.c (walk_polymorphic_call_targets): Permit 0 possible
	targets and devirtualize to BUILT_IN_UNREACHABLE.
	* timevar.def (TV_IPA_UNREACHABLE): New timevar.
	* ipa.c (walk_polymorphic_call_targets): New function.
	(symtab_remove_unreachable_nodes): Use it; do not keep all virtual
	functions; use the new timevar.
	* ipa-devirt.c (maybe_record_node): Do not insert static nodes that
	was removed from the program.
	(record_binfo): If BINFO corresponds to an anonymous namespace, we may
	not consider it in the walk when its vtable is dead.
	(possible_polymorphic_call_targets_1): Pass anonymous flag to
	record_binfo.
	(devirt_variable_node_removal_hook): New function.
	(possible_polymorphic_call_targets): Also register
	devirt_variable_node_removal_hook.
	(ipa_devirt): Do not do non-speculative devirtualization.
	(gate_ipa_devirt): One execute if devirtualizing speculatively.

2013-09-08  Jan Hubicka  <jh@suse.cz>

	* cgraph.h (varpool_node_hook, varpool_node_hook_list,
	varpool_add_node_removal_hook, varpool_add_variable_insertion_hook,
	varpool_remove_variable_insertion_hook): Declare.
	* varpool.c (varpool_node_hook_list): New structure.
	(first_varpool_node_removal_hook,
	first_varpool_variable_insertion_hook): New variables.
	(varpool_add_node_removal_hook, varpool_remove_node_removal_hook,
	varpool_call_node_removal_hooks, varpool_add_variable_insertion_hook,
	varpool_remove_variable_insertion_hook,
	varpool_call_variable_insertion_hooks): New functions.
	(varpool_remove_node): Use it.

2013-09-08  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/54941
	* diagnostic.c (diagnostic_build_prefix): When s.file is
	"<built-in>" don't output line and column numbers.

2013-09-06  Jan Hubicka  <jh@suse.cz>

	* cgraphunit.c (expand_thunk): Get body before touching arguments.
	* lto-streamer-out.c: Stream thunks, too.
	* lto-streamer-in.c (input_function): Pop cfun here
	(lto_read_body): Instead of here.

2013-09-06  Caroline Tice  <cmtice@google.com>

	* doc/install.texi: Add documentation for the --enable-vtable-verify
	and the --disable-libvtv configure options.

2013-09-06  Jeff Law  <law@redhat.com>

	* tree-ssa-dom.c (cprop_into_successor_phis): Also propagate
	edge implied equivalences into successor phis.

2013-09-06  Joern Rennecke  <joern.rennecke@embecosm.com>

	* resource.c (mark_referenced_resources): Handle COND_EXEC.

2013-09-06  Claudiu Zissulescu  <claziss@synopsys.com>

	* resource.c (mark_target_live_regs): Compute resources taking
	into account if a call is predicated or not.

2013-09-06  Eric Botcazou  <ebotcazou@adacore.com>

	* toplev.c (output_stack_usage): Be prepared for suffixes created by
	the compiler in the function names.

2013-09-06  Jan Hubicka  <jh@suse.cz>

	PR middle-end/58094
	* ipa-inline.c (has_caller_p): New function.
	(want_inline_function_to_all_callers_p): Use it.
	(sum_callers, inline_to_all_callers): Break out from ...
	(ipa_inline): ... here.

2013-09-06  Jan Hubicka  <jh@suse.cz>

	* config/i386/i386.c (ix86_hard_regno_mode_ok): AVX modes are valid
	only when AVX is enabled.

2013-09-06  James Greenhalgh  <james.greenhalgh@arm.com>

	* config/aarch64/aarch64.md
	(*movtf_aarch64): Use neon_<ls>dm_2 as type where v8type
	is fpsimd_<load/store>2.
	(load_pair<mode>): Likewise.
	(store_pair<mode>): Likewise.

2013-09-06  James Greenhalgh  <james.greenhalgh@arm.com>

	* config/arm/types.md (type): Add "mrs" type.
	* config/aarch64/aarch64.md
	(aarch64_load_tp_hard): Make type "mrs".
	* config/arm/arm.md
	(load_tp_hard): Make type "mrs".
	* config/arm/cortex-a15.md: Update with new attributes.
	* config/arm/cortex-a5.md: Update with new attributes.
	* config/arm/cortex-a53.md: Update with new attributes.
	* config/arm/cortex-a7.md: Update with new attributes.
	* config/arm/cortex-a8.md: Update with new attributes.
	* config/arm/cortex-a9.md: Update with new attributes.
	* config/arm/cortex-m4.md: Update with new attributes.
	* config/arm/cortex-r4.md: Update with new attributes.
	* config/arm/fa526.md: Update with new attributes.
	* config/arm/fa606te.md: Update with new attributes.
	* config/arm/fa626te.md: Update with new attributes.
	* config/arm/fa726te.md: Update with new attributes.

2013-09-06  James Greenhalgh  <james.greenhalgh@arm.com>

	* config/aarch64/aarch64.md
	(*movti_aarch64): Use "multiple" for type where v8type is "move2".
	(*movtf_aarch64): Likewise.
	* config/arm/arm.md
	(thumb1_movdi_insn): Use "multiple" for type where more than one
	instruction is used for a move.
	(*arm32_movhf): Likewise.
	(*thumb_movdf_insn): Likewise.

2013-09-06  James Greenhalgh  <james.greenhalgh@arm.com>

	* config/arm/types.md (type): Rename fcpys to fmov.
	* config/arm/vfp.md
	(*arm_movsi_vfp): Rename type fcpys as fmov.
	(*thumb2_movsi_vfp): Likewise
	(*movhf_vfp_neon): Likewise
	(*movhf_vfp): Likewise
	(*movsf_vfp): Likewise
	(*thumb2_movsf_vfp): Likewise
	(*movsfcc_vfp): Likewise
	(*thumb2_movsfcc_vfp): Likewise
	* config/aarch64/aarch64-simd.md
	(move_lo_quad_<mode>): Replace type mov_reg with fmovs.
	* config/aarch64/aarch64.md
	(*movsi_aarch64): Replace type mov_reg with fmovs.
	(*movdi_aarch64): Likewise
	(*movsf_aarch64): Likewise
	(*movdf_aarch64): Likewise
	* config/arm/arm.c
	(cortexa7_older_only): Rename TYPE_FCPYS to TYPE_FMOV.
	* config/arm/iwmmxt.md
	(*iwmmxt_movsi_insn): Rename type fcpys as fmov.
	* config/arm/arm1020e.md: Update with new attributes.
	* config/arm/cortex-a15-neon.md: Update with new attributes.
	* config/arm/cortex-a5.md: Update with new attributes.
	* config/arm/cortex-a53.md: Update with new attributes.
	* config/arm/cortex-a7.md: Update with new attributes.
	* config/arm/cortex-a8-neon.md: Update with new attributes.
	* config/arm/cortex-a9.md: Update with new attributes.
	* config/arm/cortex-m4-fpu.md: Update with new attributes.
	* config/arm/cortex-r4f.md: Update with new attributes.
	* config/arm/marvell-pj4.md: Update with new attributes.
	* config/arm/vfp11.md: Update with new attributes.

2013-09-06  James Greenhalgh  <james.greenhalgh@arm.com>

	* config/aarch64/aarch64.md
	(*madd<mode>): Fix type attribute.
	(*maddsi_uxtw): Likewise.
	(*msub<mode>): Likewise.
	(*msubsi_uxtw): Likewise.
	(<su_optab>maddsidi4): Likewise.
	(<su_optab>msubsidi4): Likewise.

2013-09-06  James Greenhalgh  <james.greenhalgh@arm.com>

	* config/arm/types.md: Split fdiv<sd> as fsqrt<sd>, fdiv<sd>.
	* config/arm/arm.md (core_cycles): Remove fdiv.
	* config/arm/vfp.md:
	(*sqrtsf2_vfp): Update for attribute changes.
	(*sqrtdf2_vfp): Likewise.
	* config/aarch64/aarch64.md:
	(sqrt<mode>2): Update for attribute changes.
	* config/arm/arm1020e.md: Update with new attributes.
	* config/arm/cortex-a15-neon.md: Update with new attributes.
	* config/arm/cortex-a5.md: Update with new attributes.
	* config/arm/cortex-a53.md: Update with new attributes.
	* config/arm/cortex-a7.md: Update with new attributes.
	* config/arm/cortex-a8-neon.md: Update with new attributes.
	* config/arm/cortex-a9.md: Update with new attributes.
	* config/arm/cortex-m4-fpu.md: Update with new attributes.
	* config/arm/cortex-r4f.md: Update with new attributes.
	* config/arm/marvell-pj4.md: Update with new attributes.
	* config/arm/vfp11.md: Update with new attributes.

2013-09-06  James Greenhalgh  <james.greenhalgh@arm.com>

	* config/arm/types.md
	(type): Split f_cvt as f_cvt, f_cvtf2i, f_cvti2f.
	* config/aarch64/aarch64.md
	(l<fcvt_pattern><su_optab><GPF:mode><GPI:mode>2): Update with
	new attributes.
	(fix_trunc<GPF:mode><GPI:mode>2): Likewise.
	(fixuns_trunc<GPF:mode><GPI:mode>2): Likewise.
	(float<GPI:mode><GPF:mode>2): Likewise.
	* config/arm/vfp.md
	(*truncsisf2_vfp): Update with new attributes.
	(*truncsidf2_vfp): Likewise.
	(fixuns_truncsfsi2): Likewise.
	(fixuns_truncdfsi2): Likewise.
	(*floatsisf2_vfp): Likewise.
	(*floatsidf2_vfp): Likewise.
	(floatunssisf2): Likewise.
	(floatunssidf2): Likewise.
	(*combine_vcvt_f32_<FCVTI32typename>): Likewise.
	(*combine_vcvt_f64_<FCVTI32typename>): Likewise.
	* config/arm/arm1020e.md: Update with new attributes.
	* config/arm/cortex-a15-neon.md: Update with new attributes.
	* config/arm/cortex-a5.md: Update with new attributes.
	* config/arm/cortex-a53.md: Update with new attributes.
	* config/arm/cortex-a7.md: Update with new attributes.
	* config/arm/cortex-a8-neon.md: Update with new attributes.
	* config/arm/cortex-a9.md: Update with new attributes.
	* config/arm/cortex-m4-fpu.md: Update with new attributes.
	* config/arm/cortex-r4f.md: Update with new attributes.
	* config/arm/marvell-pj4.md: Update with new attributes.
	* config/arm/vfp11.md: Update with new attributes.

2013-09-06  James Greenhalgh  <james.greenhalgh@arm.com>

	* config/aarch64/arm_neon.h
	(vqtbl<1,2,3,4><q>_s8): Fix control vector parameter type.
	(vqtbx<1,2,3,4><q>_s8): Likewise.

2013-09-06  James Greenhalgh  <james.greenhalgh@arm.com>

	* config/arm/types.md: Add "no_insn", "multiple" and "untyped" types.
	* config/arm/arm-fixed.md: Add type attribute to all insn patterns.
	(add<mode>3): Add type attribute.
	(add<mode>3): Likewise.
	(usadd<mode>3): Likewise.
	(ssadd<mode>3): Likewise.
	(sub<mode>3): Likewise.
	(sub<mode>3): Likewise.
	(ussub<mode>3): Likewise.
	(sssub<mode>3): Likewise.
	(ssmulsa3): Likewise.
	(usmulusa3): Likewise.
	(arm_usatsihi): Likewise.
	* config/arm/vfp.md
	(*movdi_vfp): Add types for all instructions.
	(*movdi_vfp_cortexa8): Likewise.
	(*movhf_vfp_neon): Likewise.
	(*movhf_vfp): Likewise.
	(*movdf_vfp): Likewise.
	(*thumb2_movdf_vfp): Likewise.
	(*thumb2_movdfcc_vfp): Likewise.
	* config/arm/arm.md: Add type attribute to all insn patterns.
	(*thumb1_adddi3): Add type attribute.
	(*arm_adddi3): Likewise.
	(*adddi_sesidi_di): Likewise.
	(*adddi_zesidi_di): Likewise.
	(*thumb1_addsi3): Likewise.
	(addsi3_compare0): Likewise.
	(*addsi3_compare0_scratch): Likewise.
	(*compare_negsi_si): Likewise.
	(cmpsi2_addneg): Likewise.
	(*addsi3_carryin_<optab>): Likewise.
	(*addsi3_carryin_alt2_<optab>): Likewise.
	(*addsi3_carryin_clobercc_<optab>): Likewise.
	(*subsi3_carryin): Likewise.
	(*subsi3_carryin_const): Likewise.
	(*subsi3_carryin_compare): Likewise.
	(*subsi3_carryin_compare_const): Likewise.
	(*arm_subdi3): Likewise.
	(*thumb_subdi3): Likewise.
	(*subdi_di_zesidi): Likewise.
	(*subdi_di_sesidi): Likewise.
	(*subdi_zesidi_di): Likewise.
	(*subdi_sesidi_di): Likewise.
	(*subdi_zesidi_ze): Likewise.
	(thumb1_subsi3_insn): Likewise.
	(*arm_subsi3_insn): Likewise.
	(*anddi3_insn): Likewise.
	(*anddi_zesidi_di): Likewise.
	(*anddi_sesdi_di): Likewise.
	(*ne_zeroextracts): Likewise.
	(*ne_zeroextracts): Likewise.
	(*ite_ne_zeroextr): Likewise.
	(*ite_ne_zeroextr): Likewise.
	(*anddi_notdi_di): Likewise.
	(*anddi_notzesidi): Likewise.
	(*anddi_notsesidi): Likewise.
	(andsi_notsi_si): Likewise.
	(thumb1_bicsi3): Likewise.
	(*iordi3_insn): Likewise.
	(*iordi_zesidi_di): Likewise.
	(*iordi_sesidi_di): Likewise.
	(*thumb1_iorsi3_insn): Likewise.
	(*xordi3_insn): Likewise.
	(*xordi_zesidi_di): Likewise.
	(*xordi_sesidi_di): Likewise.
	(*arm_xorsi3): Likewise.
	(*andsi_iorsi3_no): Likewise.
	(*smax_0): Likewise.
	(*smax_m1): Likewise.
	(*arm_smax_insn): Likewise.
	(*smin_0): Likewise.
	(*arm_smin_insn): Likewise.
	(*arm_umaxsi3): Likewise.
	(*arm_uminsi3): Likewise.
	(*minmax_arithsi): Likewise.
	(*minmax_arithsi_): Likewise.
	(*satsi_<SAT:code>): Likewise.
	(arm_ashldi3_1bit): Likewise.
	(arm_ashrdi3_1bit): Likewise.
	(arm_lshrdi3_1bit): Likewise.
	(*arm_negdi2): Likewise.
	(*thumb1_negdi2): Likewise.
	(*arm_negsi2): Likewise.
	(*thumb1_negsi2): Likewise.
	(*negdi_extendsid): Likewise.
	(*negdi_zero_extend): Likewise.
	(*arm_abssi2): Likewise.
	(*thumb1_abssi2): Likewise.
	(*arm_neg_abssi2): Likewise.
	(*thumb1_neg_abss): Likewise.
	(one_cmpldi2): Likewise.
	(extend<mode>di2): Likewise.
	(*compareqi_eq0): Likewise.
	(*arm_extendhisi2addsi): Likewise.
	(*arm_movdi): Likewise.
	(*thumb1_movdi_insn): Likewise.
	(*arm_movt): Likewise.
	(*thumb1_movsi_insn): Likewise.
	(pic_add_dot_plus_four): Likewise.
	(pic_add_dot_plus_eight): Likewise.
	(tls_load_dot_plus_eight): Likewise.
	(*thumb1_movhi_insn): Likewise.
	(*thumb1_movsf_insn): Likewise.
	(*movdf_soft_insn): Likewise.
	(*thumb_movdf_insn): Likewise.
	(cbranchsi4_insn): Likewise.
	(cbranchsi4_scratch): Likewise.
	(*negated_cbranchsi4): Likewise.
	(*tbit_cbranch): Likewise.
	(*tlobits_cbranch): Likewise.
	(*tstsi3_cbranch): Likewise.
	(*cbranchne_decr1): Likewise.
	(*addsi3_cbranch): Likewise.
	(*addsi3_cbranch_scratch): Likewise.
	(*arm_cmpdi_insn): Likewise.
	(*arm_cmpdi_unsig): Likewise.
	(*arm_cmpdi_zero): Likewise.
	(*thumb_cmpdi_zero): Likewise.
	(*deleted_compare): Likewise.
	(*mov_scc): Likewise.
	(*mov_negscc): Likewise.
	(*mov_notscc): Likewise.
	(*cstoresi_eq0_thumb1_insn): Likewise.
	(cstoresi_nltu_thumb1): Likewise.
	(cstoresi_ltu_thu): Likewise.
	(thumb1_addsi3_addgeu): Likewise.
	(*arm_jump): Likewise.
	(*thumb_jump): Likewise.
	(*check_arch2): Likewise.
	(arm_casesi_internal): Likewise.
	(thumb1_casesi_dispatch): Likewise.
	(*arm_indirect_jump): Likewise.
	(*thumb1_indirect_jump): Likewise.
	(nop): Likewise.
	(*and_scc): Likewise.
	(*ior_scc): Likewise.
	(*compare_scc): Likewise.
	(*cond_move): Likewise.
	(*cond_arith): Likewise.
	(*cond_sub): Likewise.
	(*cmp_ite0): Likewise.
	(*cmp_ite1): Likewise.
	(*cmp_and): Likewise.
	(*cmp_ior): Likewise.
	(*ior_scc_scc): Likewise.
	(*ior_scc_scc_cmp): Likewise.
	(*and_scc_scc): Likewise.
	(*and_scc_scc_cmp): Likewise.
	(*and_scc_scc_nod): Likewise.
	(*negscc): Likewise.
	(movcond_addsi): Likewise.
	(movcond): Likewise.
	(*ifcompare_plus_move): Likewise.
	(*if_plus_move): Likewise.
	(*ifcompare_move_plus): Likewise.
	(*if_move_plus): Likewise.
	(*ifcompare_arith_arith): Likewise.
	(*if_arith_arith): Likewise.
	(*ifcompare_arith_move): Likewise.
	(*if_arith_move): Likewise.
	(*ifcompare_move_arith): Likewise.
	(*if_move_arith): Likewise.
	(*ifcompare_move_not): Likewise.
	(*if_move_not): Likewise.
	(*ifcompare_not_move): Likewise.
	(*if_not_move): Likewise.
	(*ifcompare_shift_move): Likewise.
	(*if_shift_move): Likewise.
	(*ifcompare_move_shift): Likewise.
	(*if_move_shift): Likewise.
	(*ifcompare_shift_shift): Likewise.
	(*ifcompare_not_arith): Likewise.
	(*ifcompare_arith_not): Likewise.
	(*if_arith_not): Likewise.
	(*ifcompare_neg_move): Likewise.
	(*if_neg_move): Likewise.
	(*ifcompare_move_neg): Likewise.
	(*if_move_neg): Likewise.
	(prologue_thumb1_interwork): Likewise.
	(*cond_move_not): Likewise.
	(*sign_extract_onebit): Likewise.
	(*not_signextract_onebit): Likewise.
	(stack_tie): Likewise.
	(align_4): Likewise.
	(align_8): Likewise.
	(consttable_end): Likewise.
	(consttable_1): Likewise.
	(consttable_2): Likewise.
	(consttable_4): Likewise.
	(consttable_8): Likewise.
	(consttable_16): Likewise.
	(*thumb1_tablejump): Likewise.
	(prefetch): Likewise.
	(force_register_use): Likewise.
	(thumb_eh_return): Likewise.
	(load_tp_hard): Likewise.
	(load_tp_soft): Likewise.
	(tlscall): Likewise.
	(*arm_movtas_ze): Likewise.
	(*arm_rev): Likewise.
	(*arm_revsh): Likewise.
	(*arm_rev16): Likewise.
	* config/arm/thumb2.md
	(*thumb2_smaxsi3): Likewise.
	(*thumb2_sminsi3): Likewise.
	(*thumb32_umaxsi3): Likewise.
	(*thumb2_uminsi3): Likewise.
	(*thumb2_negdi2): Likewise.
	(*thumb2_abssi2): Likewise.
	(*thumb2_neg_abss): Likewise.
	(*thumb2_movsi_insn): Likewise.
	(tls_load_dot_plus_four): Likewise.
	(*thumb2_movhi_insn): Likewise.
	(*thumb2_mov_scc): Likewise.
	(*thumb2_mov_negs): Likewise.
	(*thumb2_mov_negs): Likewise.
	(*thumb2_mov_nots): Likewise.
	(*thumb2_mov_nots): Likewise.
	(*thumb2_movsicc_): Likewise.
	(*thumb2_movsfcc_soft_insn): Likewise.
	(*thumb2_indirect_jump): Likewise.
	(*thumb2_and_scc): Likewise.
	(*thumb2_ior_scc): Likewise.
	(*thumb2_ior_scc_strict_it): Likewise.
	(*thumb2_cond_move): Likewise.
	(*thumb2_cond_arith): Likewise.
	(*thumb2_cond_ari): Likewise.
	(*thumb2_cond_sub): Likewise.
	(*thumb2_negscc): Likewise.
	(*thumb2_movcond): Likewise.
	(thumb2_casesi_internal): Likewise.
	(thumb2_casesi_internal_pic): Likewise.
	(*thumb2_alusi3_short): Likewise.
	(*thumb2_mov<mode>_shortim): Likewise.
	(*thumb2_addsi_short): Likewise.
	(*thumb2_subsi_short): Likewise.
	(thumb2_addsi3_compare0): Likewise.
	(*thumb2_cbz): Likewise.
	(*thumb2_cbnz): Likewise.
	(*thumb2_one_cmplsi2_short): Likewise.
	(*thumb2_negsi2_short): Likewise.
	(*orsi_notsi_si): Likewise.
	* config/arm/arm1020e.md: Update with new attributes.
	* config/arm/arm1026ejs.md: Update with new attributes.
	* config/arm/arm1136jfs.md: Update with new attributes.
	* config/arm/arm926ejs.md: Update with new attributes.
	* config/arm/cortex-a15.md: Update with new attributes.
	* config/arm/cortex-a5.md: Update with new attributes.
	* config/arm/cortex-a53.md: Update with new attributes.
	* config/arm/cortex-a7.md: Update with new attributes.
	* config/arm/cortex-a8.md: Update with new attributes.
	* config/arm/cortex-a9.md: Update with new attributes.
	* config/arm/cortex-m4.md: Update with new attributes.
	* config/arm/cortex-r4.md: Update with new attributes.
	* config/arm/fa526.md: Update with new attributes.
	* config/arm/fa606te.md: Update with new attributes.
	* config/arm/fa626te.md: Update with new attributes.
	* config/arm/fa726te.md: Update with new attributes.

2013-09-06  James Greenhalgh  <james.greenhalgh@arm.com>

	* config/aarch64/aarch64-simd.md
	(aarch64_sqdml<SBINQOPS:as>l_n<mode>_internal): Use
	<vwx> iterator to ensure correct register choice.
	(aarch64_sqdml<SBINQOPS:as>l2_n<mode>_internal): Likewise.
	(aarch64_sqdmull_n<mode>): Likewise.
	(aarch64_sqdmull2_n<mode>_internal): Likewise.
	* config/aarch64/arm_neon.h
	(vml<as><q>_lane<q>_<su>16): Use 'x' constraint for element vector.
	(vml<as><q>_n_<su>16): Likewise.
	(vml<as>l_high_lane<q>_<su>16): Likewise.
	(vml<as>l_high_n_<su>16): Likewise.
	(vml<as>l_lane<q>_<su>16): Likewise.
	(vml<as>l_n_<su>16): Likewise.
	(vmul<q>_lane<q>_<su>16): Likewise.
	(vmul<q>_n_<su>16): Likewise.
	(vmull_lane<q>_<su>16): Likewise.
	(vmull_n_<su>16): Likewise.
	(vmull_high_lane<q>_<su>16): Likewise.
	(vmull_high_n_<su>16): Likewise.
	(vqrdmulh<q>_n_s16): Likewise.

2013-09-06  Tejas Belagod  <tejas.belagod@arm.com>

	* config/aarch64/arm_neon.h: Fix all vdup<bhsd_lane<q> intrinsics to
	have the correct lane parameter.

2013-09-06  Richard Biener <rguenther@suse.de>

	* cfganal.c (control_dependences::~control_dependences):
	Properly free all of the vector.

2013-09-06  Kirill Yukhin  <kirill.yukhin@intel.com>

	PR target/58269
	* config/i386/i386.c (ix86_conditional_register_usage):
	Proper initialize extended SSE registers.

2013-09-06  Jan Hubicka  <jh@suse.cz>

	PR tree-optimization/58311
	* ipa-devirt.c (gate_ipa_devirt): Only execute when optimizing.

2013-09-06  Jan Hubicka  <jh@suse.cz>

	* Makefile.in (tree-sra.o): Update dependencies.
	* tree-sra.c: Include ipa-utils.h
	(scan_function): Use recursive_call_p.
	(has_caller_p): New function.
	(cgraph_for_node_and_aliases): Count also callers of aliases.

2013-09-06  Jan Hubicka  <jh@suse.cz>

	PR middle-end/58094
	* cgraph.h (symtab_semantically_equivalent_p): Declare.
	* tree-tailcall.c: Include ipa-utils.h.
	(find_tail_calls): Use it.
	* ipa-pure-const.c (check_call): Likewise.
	* ipa-utils.c (recursive_call_p): New function.
	* ipa-utils.h (recursive_call_p): Dclare.
	* symtab.c (symtab_nonoverwritable_alias): Fix formatting.
	(symtab_semantically_equivalent_p): New function.
	* Makefile.in (tree-tailcall.o): Update dependencies.

2013-09-06  Eric Botcazou  <ebotcazou@adacore.com>

	* ipa-split.c (split_function): Set DECL_NO_INLINE_WARNING_P on the
	non-inlinable part.

2013-09-06  Richard Biener  <rguenther@suse.de>

	* lto-streamer.h (lto_global_var_decls): Remove.
	* Makefile.in (OBJS): Remove lto-symtab.o.
	(lto-symtab.o): Remove.
	(GTFILES): Remove lto-symtab.c
	* lto-symtab.c: Move to lto/

2013-09-06  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>

	* config/s390/s390.md (UNSPEC_FPINT_FLOOR, UNSPEC_FPINT_BTRUNC)
	(UNSPEC_FPINT_ROUND, UNSPEC_FPINT_CEIL, UNSPEC_FPINT_NEARBYINT)
	(UNSPEC_FPINT_RINT): New constant definitions.
	(FPINT, fpint_name, fpint_roundingmode): New integer iterator
	definition with 2 attributes.
	("<FPINT:fpint_name><BFP:mode>2", "rint<BFP:mode>2")
	("<FPINT:fpint_name><DFP:mode>2", "rint<DFP:mode>2"): New pattern
	definitions.

2013-09-06  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>

	* config/s390/s390.md: Add "bcr_flush" value to mnemonic attribute.
	("mem_thread_fence_1"): Use bcr 14,0 for z196 and later.
	Set the mnemonic attribute to "bcr_flush".  Set the "z196prop"
	attribute to "z196_alone".
	* config/s390/2827.md: Add "bcr_flush" to "ooo_groupalone" and
	"zEC12_simple".

2013-09-06  Richard Biener  <rguenther@suse.de>

	* basic-block.h (class control_dependences): New.
	* tree-ssa-dce.c (control_dependence_map): Remove.
	(cd): New global.
	(EXECUTE_IF_CONTROL_DEPENDENT): Remove.
	(set_control_dependence_map_bit, clear_control_dependence_bitmap,
	find_pdom, find_control_dependence, find_all_control_dependences):
	Move to cfganal.c.
	(mark_control_dependent_edges_necessary,
	find_obviously_necessary_stmts, propagate_necessity, tree_dce_init,
	tree_dce_done, perform_tree_ssa_dce): Adjust.
	* cfganal.c (set_control_dependence_map_bit,
	clear_control_dependence_bitmap, find_pdom, find_control_dependence,
	find_all_control_dependences): Move from tree-ssa-dce.c and
	implement as methods of control_dependences class.
	(control_dependences::control_dependences): New.
	(control_dependences::~control_dependences): Likewise.
	(control_dependences::get_edges_dependent_on): Likewise.
	(control_dependences::get_edge): Likewise.

2013-09-04  Jan Hubicka  <jh@suse.cz>

	* tree.c (types_same_for_odr): Drop overactive check.
	* ipa-devirt.c (hash_type_name): Likewise.

2013-09-04  Jan Hubicka  <jh@suse.cz>

	* cgraphunit.c (walk_polymorphic_call_targets): Break out from ...
	(analyze_functions): ... here.

2013-09-04  Jan Hubicka  <jh@suse.cz>

	PR middle-end/58201
	* cgraphunit.c (analyze_functions): Clear AUX fields
	after processing; initialize assembler name has.

2013-09-05  Jeff Law  <law@redhat.com>

	* tree-ssa-threadedge.c (thread_around_empty_blocks): Renamed
	from thread_around_empty_block.  Record threading path into PATH.
	Recurse if threading through the initial block is successful.
	(thread_across_edge): Corresponding changes to slightly simplify.

2013-09-05  James Greenhalgh  <james.greenhalgh@arm.com>

	* config/aarch64/aarch64.md
	(type): Remove frecpe, frecps, frecpx.
	(aarch64_frecp<FRECP:frecp_suffix><mode>): Move to aarch64-simd.md,
	fix to be a TARGET_SIMD instruction.
	(aarch64_frecps): Remove.
	* config/aarch64/aarch64-simd.md
	(aarch64_frecp<FRECP:frecp_suffix><mode>): New, moved from aarch64.md
	(aarch64_frecps<mode>): Handle all float/vector of float modes.

2013-09-05  James Greenhalgh  <james.greenhalgh@arm.com>
	    Sofiane Naci  <sofiane.naci@arm.com>

	* config/arm/types.md (define_attr "type"): Expand "arlo_imm"
	into "adr", "alu_imm", "alus_imm", "logic_imm", "logics_imm".
	Expand "arlo_reg" into "adc_reg", "adc_imm", "adcs_reg", "adcs_imm",
	"alu_ext", "alu_reg", "alus_ext", "alus_reg", "bfm", "csel",
	"log…
  • Loading branch information
amacleod committed Sep 17, 2013
1 parent cb06493 commit 1d2fabc
Show file tree
Hide file tree
Showing 5 changed files with 254 additions and 239 deletions.
14 changes: 14 additions & 0 deletions gcc/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
2013-09-17 Andrew MacLeod <amacleod@redhat.com>

* tree-flow.h (ssa_undefined_value_p): Remove prototype.
* tree-ssa.c (ssa_undefined_value_p): Move pass independent parts here.
(warn_uninit, warn_uninitialized_vars, execute_early_warn_uninitialized,
make_pass_early_warn_uninitialized): Move to tree-ssa-uninit.c.
* tree-ssa-uninit.c (ssa_undefined_value_p): Move to tree-ssa.c
(has_undefined_value_p): New. Pass dependant parts of
ssa_undefined_value_p.
(uninit_undefined_value_p): Use has_undefined_value_p.
(warn_uninit, warn_uninitialized_vars, execute_early_warn_uninitialized,
make_pass_early_warn_uninitialized): Move from tree-ssa.c
* tree-ssa.h: Adjust prototypes

2013-09-17 Jan Hubicka <jh@suse.cz>

PR middle-end/58329
Expand Down
3 changes: 0 additions & 3 deletions gcc/tree-flow.h
Original file line number Diff line number Diff line change
Expand Up @@ -421,9 +421,6 @@ extern bool gimple_seq_may_fallthru (gimple_seq);
extern bool gimple_stmt_may_fallthru (gimple);
extern bool gimple_check_call_matching_types (gimple, tree, bool);

/* In tree-ssa-uninit.c */
extern bool ssa_undefined_value_p (tree);

/* In tree-into-ssa.c */
void update_ssa (unsigned);
void delete_update_ssa (void);
Expand Down
239 changes: 214 additions & 25 deletions gcc/tree-ssa-uninit.c
Original file line number Diff line number Diff line change
Expand Up @@ -74,46 +74,173 @@ get_mask_first_set_bit (unsigned mask)
}
#define MASK_FIRST_SET_BIT(mask) get_mask_first_set_bit (mask)


/* Return true if T, an SSA_NAME, has an undefined value. */

bool
ssa_undefined_value_p (tree t)
static bool
has_undefined_value_p (tree t)
{
tree var = SSA_NAME_VAR (t);

if (!var)
;
/* Parameters get their initial value from the function entry. */
else if (TREE_CODE (var) == PARM_DECL)
return false;
/* When returning by reference the return address is actually a hidden
parameter. */
else if (TREE_CODE (var) == RESULT_DECL && DECL_BY_REFERENCE (var))
return false;
/* Hard register variables get their initial value from the ether. */
else if (TREE_CODE (var) == VAR_DECL && DECL_HARD_REGISTER (var))
return false;

/* The value is undefined iff its definition statement is empty. */
return (gimple_nop_p (SSA_NAME_DEF_STMT (t))
return (ssa_undefined_value_p (t)
|| (possibly_undefined_names
&& pointer_set_contains (possibly_undefined_names, t)));
}

/* Like ssa_undefined_value_p, but don't return true if TREE_NO_WARNING


/* Like has_undefined_value_p, but don't return true if TREE_NO_WARNING
is set on SSA_NAME_VAR. */

static inline bool
uninit_undefined_value_p (tree t)
{
if (!ssa_undefined_value_p (t))
uninit_undefined_value_p (tree t) {
if (!has_undefined_value_p (t))
return false;
if (SSA_NAME_VAR (t) && TREE_NO_WARNING (SSA_NAME_VAR (t)))
return false;
return true;
}

/* Emit warnings for uninitialized variables. This is done in two passes.
The first pass notices real uses of SSA names with undefined values.
Such uses are unconditionally uninitialized, and we can be certain that
such a use is a mistake. This pass is run before most optimizations,
so that we catch as many as we can.
The second pass follows PHI nodes to find uses that are potentially
uninitialized. In this case we can't necessarily prove that the use
is really uninitialized. This pass is run after most optimizations,
so that we thread as many jumps and possible, and delete as much dead
code as possible, in order to reduce false positives. We also look
again for plain uninitialized variables, since optimization may have
changed conditionally uninitialized to unconditionally uninitialized. */

/* Emit a warning for EXPR based on variable VAR at the point in the
program T, an SSA_NAME, is used being uninitialized. The exact
warning text is in MSGID and LOCUS may contain a location or be null.
WC is the warning code. */

static void
warn_uninit (enum opt_code wc, tree t,
tree expr, tree var, const char *gmsgid, void *data)
{
gimple context = (gimple) data;
location_t location, cfun_loc;
expanded_location xloc, floc;

if (!has_undefined_value_p (t))
return;

/* TREE_NO_WARNING either means we already warned, or the front end
wishes to suppress the warning. */
if ((context
&& (gimple_no_warning_p (context)
|| (gimple_assign_single_p (context)
&& TREE_NO_WARNING (gimple_assign_rhs1 (context)))))
|| TREE_NO_WARNING (expr))
return;

location = (context != NULL && gimple_has_location (context))
? gimple_location (context)
: DECL_SOURCE_LOCATION (var);
location = linemap_resolve_location (line_table, location,
LRK_SPELLING_LOCATION,
NULL);
cfun_loc = DECL_SOURCE_LOCATION (cfun->decl);
xloc = expand_location (location);
floc = expand_location (cfun_loc);
if (warning_at (location, wc, gmsgid, expr))
{
TREE_NO_WARNING (expr) = 1;

if (location == DECL_SOURCE_LOCATION (var))
return;
if (xloc.file != floc.file
|| linemap_location_before_p (line_table,
location, cfun_loc)
|| linemap_location_before_p (line_table,
cfun->function_end_locus,
location))
inform (DECL_SOURCE_LOCATION (var), "%qD was declared here", var);
}
}

static unsigned int
warn_uninitialized_vars (bool warn_possibly_uninitialized)
{
gimple_stmt_iterator gsi;
basic_block bb;

FOR_EACH_BB (bb)
{
bool always_executed = dominated_by_p (CDI_POST_DOMINATORS,
single_succ (ENTRY_BLOCK_PTR), bb);
for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
{
gimple stmt = gsi_stmt (gsi);
use_operand_p use_p;
ssa_op_iter op_iter;
tree use;

if (is_gimple_debug (stmt))
continue;

/* We only do data flow with SSA_NAMEs, so that's all we
can warn about. */
FOR_EACH_SSA_USE_OPERAND (use_p, stmt, op_iter, SSA_OP_USE)
{
use = USE_FROM_PTR (use_p);
if (always_executed)
warn_uninit (OPT_Wuninitialized, use,
SSA_NAME_VAR (use), SSA_NAME_VAR (use),
"%qD is used uninitialized in this function",
stmt);
else if (warn_possibly_uninitialized)
warn_uninit (OPT_Wmaybe_uninitialized, use,
SSA_NAME_VAR (use), SSA_NAME_VAR (use),
"%qD may be used uninitialized in this function",
stmt);
}

/* For memory the only cheap thing we can do is see if we
have a use of the default def of the virtual operand.
??? Note that at -O0 we do not have virtual operands.
??? Not so cheap would be to use the alias oracle via
walk_aliased_vdefs, if we don't find any aliasing vdef
warn as is-used-uninitialized, if we don't find an aliasing
vdef that kills our use (stmt_kills_ref_p), warn as
may-be-used-uninitialized. But this walk is quadratic and
so must be limited which means we would miss warning
opportunities. */
use = gimple_vuse (stmt);
if (use
&& gimple_assign_single_p (stmt)
&& !gimple_vdef (stmt)
&& SSA_NAME_IS_DEFAULT_DEF (use))
{
tree rhs = gimple_assign_rhs1 (stmt);
tree base = get_base_address (rhs);

/* Do not warn if it can be initialized outside this function. */
if (TREE_CODE (base) != VAR_DECL
|| DECL_HARD_REGISTER (base)
|| is_global_var (base))
continue;

if (always_executed)
warn_uninit (OPT_Wuninitialized, use,
gimple_assign_rhs1 (stmt), base,
"%qE is used uninitialized in this function",
stmt);
else if (warn_possibly_uninitialized)
warn_uninit (OPT_Wmaybe_uninitialized, use,
gimple_assign_rhs1 (stmt), base,
"%qE may be used uninitialized in this function",
stmt);
}
}
}

return 0;
}

/* Checks if the operand OPND of PHI is defined by
another phi with one operand defined by this PHI,
but the rest operands are all defined. If yes,
Expand Down Expand Up @@ -2084,3 +2211,65 @@ make_pass_late_warn_uninitialized (gcc::context *ctxt)
{
return new pass_late_warn_uninitialized (ctxt);
}


static unsigned int
execute_early_warn_uninitialized (void)
{
/* Currently, this pass runs always but
execute_late_warn_uninitialized only runs with optimization. With
optimization we want to warn about possible uninitialized as late
as possible, thus don't do it here. However, without
optimization we need to warn here about "may be uninitialized".
*/
calculate_dominance_info (CDI_POST_DOMINATORS);

warn_uninitialized_vars (/*warn_possibly_uninitialized=*/!optimize);

/* Post-dominator information can not be reliably updated. Free it
after the use. */

free_dominance_info (CDI_POST_DOMINATORS);
return 0;
}


namespace {

const pass_data pass_data_early_warn_uninitialized =
{
GIMPLE_PASS, /* type */
"*early_warn_uninitialized", /* name */
OPTGROUP_NONE, /* optinfo_flags */
true, /* has_gate */
true, /* has_execute */
TV_TREE_UNINIT, /* tv_id */
PROP_ssa, /* properties_required */
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
0, /* todo_flags_finish */
};

class pass_early_warn_uninitialized : public gimple_opt_pass
{
public:
pass_early_warn_uninitialized(gcc::context *ctxt)
: gimple_opt_pass(pass_data_early_warn_uninitialized, ctxt)
{}

/* opt_pass methods: */
bool gate () { return gate_warn_uninitialized (); }
unsigned int execute () { return execute_early_warn_uninitialized (); }

}; // class pass_early_warn_uninitialized

} // anon namespace

gimple_opt_pass *
make_pass_early_warn_uninitialized (gcc::context *ctxt)
{
return new pass_early_warn_uninitialized (ctxt);
}


0 comments on commit 1d2fabc

Please sign in to comment.