1. 10 Apr, 2013 13 commits
    • Improve cstore code generation on 64-bit sparc. · 42e37616
      One major suboptimal area of the sparc back end is cstore generation
      on 64-bit.
      
      Due to the way arguments and return values of functions must be
      promoted, the ideal mode for cstore's result would be DImode.
      
      But this hasn't been done because of a fundamental limitation
      of the cstore patterns.  They require a fixed mode be used for
      the boolean result value.
      
      I've decided to work around this by building a target hook which
      specifies the type to use for conditional store results, and then I
      use a special predicate for operans 0 in the cstore expanders so
      that they still match even when we use DImode.
      
      The default version of the target hook just does what it does now,
      so no other target should be impacted by this at all.
      
      Regstrapped on 32-bit sparc-linux-gnu and I've run the testsuite
      with "-m64" to validate the 64-bit side.
      
      gcc/
      
      	* target.def (cstore_mode): New hook.
      	* target.h: Include insn-codes.h
      	* targhooks.c: Likewise.
      	(default_cstore_mode): New function.
      	* targhooks.h: Declare it.
      	* doc/tm.texi.in: New hook slot for TARGET_CSTORE_MODE.
      	* doc/tm.texi: Rebuild.
      	* expmed.c (emit_cstore): Obtain cstore boolean result mode using
      	target hook, rather than inspecting the insn_data.
      	* config/sparc/sparc.c (sparc_cstore_mode): New function.
      	(TARGET_CSTORE_MODE): Redefine.
      	(emit_scc_insn): When TARGET_ARCH64, emit new 64-bit boolean
      	result patterns.
      	* config/sparc/predicates.md (cstore_result_operand): New special
      	predicate.
      	* config/sparc/sparc.md (cstoresi4, cstoredi4, cstore<F:mode>4):
      	Use it for operand 0.
      	(*seqsi_special): Rewrite using 'P' mode iterator on operand 0.
      	(*snesi_special): Likewise.
      	(*snesi_zero): Likewise.
      	(*seqsi_zero): Likewise.
      	(*sltu_insn): Likewise.
      	(*sgeu_insn): Likewise.
      	(*seqdi_special): Make operand 0 and comparison operation be of
      	DImode.
      	(*snedi_special): Likewise.
      	(*snedi_special_vis3): Likewise.
      	(*neg_snesi_zero): Rename to *neg_snesisi_zero.
      	(*neg_snesi_sign_extend): Rename to *neg_snesidi_zero.
      	(*snesi_zero_extend): Delete, covered by 'P' mode iterator.
      	(*neg_seqsi_zero): Rename to *neg_seqsisi_zero.
      	(*neg_seqsi_sign_extend): Rename to *neg_seqsidi_zero.
      	(*seqsi_zero_extend): Delete, covered by 'P' mode iterator.
      	(*sltu_extend_sp64): Likewise.
      	(*neg_sltu_insn): Rename to *neg_sltusi_insn.
      	(*neg_sltu_extend_sp64): Rename to *neg_sltudi_insn.
      	(*sgeu_extend_sp64): Delete, covered by 'P' mode iterator.
      	(*neg_sgeu_insn): Rename to *neg_sgeusi_insn.
      	(*neg_sgeu_extend_sp64): Rename to *neg_sgeudi_insn.
      
      gcc/testsuite/
      
      	* gcc.target/sparc/setcc-4.c: New test.
      	* gcc.target/sparc/setcc-5.c: New test.
      
      From-SVN: r197679
      David S. Miller committed
    • aarch64.c (aarch64_print_extension): New function. · 95ca411e
      	* config/aarch64/aarch64.c (aarch64_print_extension): New function.
      	(aarch64_start_file): Use the new function.
      
      From-SVN: r197677
      Yufeng Zhang committed
    • common.opt: Add -gdwarf. · 6782438d
      	* common.opt: Add -gdwarf.
      	* opts.c (common_handle_option): Handle it.
      	* gcc.c (ASM_DEBUG_SPEC): Don't expect "-2" for DWARF.
      
      Co-Authored-By: Jason Merrill <jason@redhat.com>
      
      From-SVN: r197675
      Senthil Kumar Selvaraj committed
    • passes.c (execute_todo): Do not call ggc_collect conditional here. · bb313b93
      2013-04-10  Richard Biener  <rguenther@suse.de>
      
      	* passes.c (execute_todo): Do not call ggc_collect conditional here.
      	(execute_one_ipa_transform_pass): But unconditionally here.
      	(execute_one_pass): And here.
      	(init_optimization_passes): Remove reload pass.
      	* tree-pass.h (TODO_ggc_collect): Remove.
      	(pass_reload): Likewise.
      	* ira.c (do_reload): Merge into ...
      	(ira): ... this.
      	(rest_of_handle_reload): Remove.
      	(pass_reload): Likewise.
      	* config/i386/i386.c (ix86_option_override): Refer to ira instead
      	of reload for vzeroupper pass placement.
      	* <everywhere>: Remove TODO_ggc_collect from todo_flags_start
      	and todo_flags_finish of all passes.
      
      	* g++.dg/pr55604.C: Use -fdump-rtl-ira.
      
      From-SVN: r197671
      Richard Biener committed
    • tree-vectorizer.h (struct _slp_oprnd_info): Remove first_const_oprnd field,… · 793d9a16
      tree-vectorizer.h (struct _slp_oprnd_info): Remove first_const_oprnd field, rename first_def_type to first_op_type.
      
      2013-04-10  Richard Biener  <rguenther@suse.de>
      
      	* tree-vectorizer.h (struct _slp_oprnd_info): Remove
      	first_const_oprnd field, rename first_def_type to first_op_type.
      	* tree-vect-slp.c (vect_create_oprnd_info): Adjust.
      	(vect_get_and_check_slp_defs): Always use the type of the
      	operand.  Allow mixed vect_external_def, vect_constant_def types.
      	(vect_get_constant_vectors): Handle mixed vect_external_def,
      	vect_constant_def types.
      
      	* gcc.dg/vect/slp-39.c: New testcase.
      
      From-SVN: r197669
      Richard Biener committed
    • re PR tree-optimization/55524 (If fnma exists but not fms, convert_mult_to_fma… · ee8a9b7b
      re PR tree-optimization/55524 (If fnma exists but not fms, convert_mult_to_fma should prefer to former over the latter.)
      
      gcc:
      2013-04-10  Joern Rennecke <joern.rennecke@embecosm.com>
      
              PR tree-optimization/55524
              * tree-ssa-math-opts.c
              (convert_mult_to_fma): Don't use an fms construct
              when we don't have an fms operation, but fnma, and it looks
              likely that we'll be able to use the latter.
      
      gcc/testsuite:
      2013-04-10  Joern Rennecke <joern.rennecke@embecosm.com>
      
              PR tree-optimization/55524
              * gcc.target/epiphany/fnma-1.c: New test.
      
      From-SVN: r197668
      Joern Rennecke committed
    • cif-code.def (OVERWRITABLE): Correct the comment for overwritable function. · 6957a6f6
      2013-04-10  Zhouyi Zhou <yizhouzhou@ict.ac.cn>
      
      	* cif-code.def (OVERWRITABLE): Correct the comment for overwritable
      	function.
      	* ipa-inline.c (can_inline_edge_p): Let dump mechanism report the
      	inline fail caused by overwritable functions.
      
      	* gcc.dg/tree-ssa/inline-11.c: New test
      
      From-SVN: r197667
      Zhouyi Zhou committed
    • combine.c (simplify_compare_const): Use GET_MODE_MASK to filter out unnecessary… · 34ab4a5b
      combine.c (simplify_compare_const): Use GET_MODE_MASK to filter out unnecessary bits in the constant power of two case.
      
      2013-04-10  Chung-Ju Wu  <jasonwucj@gmail.com>
      
      	* combine.c (simplify_compare_const): Use GET_MODE_MASK to filter out
      	unnecessary bits in the constant power of two case.
      
      From-SVN: r197666
      Chung-Ju Wu committed
    • tree-vect-slp.c (vect_get_and_check_slp_defs): Remove broken code swapping operands. · abf9bfbc
      2013-04-10  Richard Biener  <rguenther@suse.de>
      
      	* tree-vect-slp.c (vect_get_and_check_slp_defs): Remove
      	broken code swapping operands.
      	(vect_build_slp_tree): Do not compute load permutations here.
      	(vect_analyze_slp_instance): Compute load permutations here,
      	after building the SLP tree.
      
      From-SVN: r197665
      Richard Biener committed
    • sh.md (barrier_align): Use next/prev_active_insn instead of next/prev_real_insn. · f408477e
      *  config/sh/sh.md (barrier_align): Use next/prev_active_insn instead
      of next/prev_real_insn.
      
      From-SVN: r197664
      Christian Bruel committed
    • MAINTAINERS (Write After Approval): Add myself. · 4b1d4198
      2013-04-10 Chung-Ju Wu <jasonwucj@gmail.com>
      
      	* MAINTAINERS (Write After Approval): Add myself.
      
      From-SVN: r197663
      Chung-Ju Wu committed
    • re PR c++/56895 (ICE: unexpected expression of kind arrow_expr) · f7e8cd25
      	PR c++/56895
      	* typeck.c (cp_build_binary_op): Call fold_non_dependent_expr_sfinae
      	first before calling maybe_constant_value for warn_for_div_by_zero
      	or invalid shift count warning purposes.
      
      	* g++.dg/template/arrow3.C: New test.
      
      From-SVN: r197660
      Jakub Jelinek committed
    • Daily bump. · 13aac201
      From-SVN: r197658
      GCC Administrator committed
  2. 09 Apr, 2013 20 commits
  3. 08 Apr, 2013 7 commits
    • re PR c++/56838 (GCC svn doesn't compile libreoffice 4.0.1.2) · a0c06853
      	PR c++/56838
      	PR c++/17232
      	* typeck2.c (abstract_virtuals_error_sfinae): Disable
      	complete_type again.
      
      From-SVN: r197613
      Jason Merrill committed
    • rtl.texi (sequence): Rewrite documentation to match the current use of SEQUENCE rtl objects. · 9fb6b620
      
      	* doc/rtl.texi (sequence): Rewrite documentation to match the
      	current use of SEQUENCE rtl objects.
      	* rtl.def (SEQUENCE): Likewise.
      
      	* doc/rtl.texi (NOTE_INSN_EH_REGION_BEG, NOTE_INSN_EH_REGION_END):
      	Update documentation.
      	(NOTE_INSN_LOOP_BEG, NOTE_INSN_LOOP_END, NOTE_INSN_LOOP_CONT,
      	NOTE_INSN_LOOP_VTOP): Remove documentation for non-existing notes.
      
      	* reg-notes.def (REG_EH_CONTEXT): Remove unused note.
      
      From-SVN: r197611
      Steven Bosscher committed
    • re PR fortran/56872 (Incorrect SUM evaluation, involving implied-do loop, with -ffrontend-optimize) · a2d0800a
      2013-04-08  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR fortran/56782
      	* frontend-passes.c (callback_reduction):  Dont't do
      	any simplification if there is only a single element
      	which has an iterator.
      
      2013-04-08  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR fortran/56782
      	* gfortran.dg/array_constructor_44.f90:  New test.
      
      From-SVN: r197610
      Thomas Koenig committed
    • re PR c++/56871 ([c++11] Specialization of constexpr Templated Function) · 0c3f68a0
      /cp
      2013-04-08  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/56871
      	* decl.c (validate_constexpr_redeclaration): Allow an explicit
      	specialization to be different wrt the constexpr specifier.
      
      /testsuite
      2013-04-08  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/56871
      	* g++.dg/cpp0x/constexpr-specialization.C: New.
      
      From-SVN: r197597
      Paolo Carlini committed
    • First phase of unifying the computation of profile scale factors/probabilities… · 8ddb5a29
      First phase of unifying the computation of profile scale factors/probabilities and the actual scaling to use rounding divides...
      
      First phase of unifying the computation of profile scale factors/probabilities
      and the actual scaling to use rounding divides:
      - Add new macro GCOV_COMPUTE_SCALE to basic-block.h to compute the scale
      factor/probability via a rounding divide.
      - Change all locations that already perform rounding divides (inline or via RDIV)
      to use the appropriate helper: GCOV_COMPUTE_SCALE, apply_probability or
      combine_probabilities.
      - Change ipa-cp.c truncating divides to use rounding divides.
      - Add comments to all other locations (currently using truncating divides) to
      switch them to one of the helpers so they use a rounding divide.
      
      Next phase will be to replace the locations using truncating divides, marked
      with a comment here, into rounding divides via the helper methods.
      
      2013-04-08  Teresa Johnson  <tejohnson@google.com>
      
      	* basic-block.h (GCOV_COMPUTE_SCALE): Define.
      	* ipa-inline-analysis.c (param_change_prob): Use helper rounding divide
              methods.
      	(estimate_edge_size_and_time): Add comment to suggest using rounding
      	methods.
      	(estimate_node_size_and_time): Ditto.
      	(remap_edge_change_prob): Use helper rounding divide methods.
      	* value-prof.c (gimple_divmod_fixed_value_transform): Ditto.
      	(gimple_mod_pow2_value_transform): Ditto.
      	(gimple_mod_subtract_transform): Ditto.
      	(gimple_ic_transform): Ditto.
      	(gimple_stringops_transform): Ditto.
      	* stmt.c (conditional_probability): Ditto.
      	(emit_case_dispatch_table): Ditto.
      	* lto-cgraph.c (merge_profile_summaries): Ditto.
      	* tree-optimize.c (execute_fixup_cfg): Ditto.
      	* cfgcleanup.c (try_forward_edges): Ditto.
      	* cfgloopmanip.c (scale_loop_profile): Ditto.
      	(loopify): Ditto.
      	(duplicate_loop_to_header_edge): Ditto.
      	(lv_adjust_loop_entry_edge): Ditto.
      	* tree-vect-loop.c (vect_transform_loop): Ditto.
      	* profile.c (compute_branch_probabilities): Ditto.
      	* cfgbuild.c (compute_outgoing_frequencies): Ditto.
      	* lto-streamer-in.c (input_cfg): Ditto.
      	* gimple-streamer-in.c (input_bb): Ditto.
      	* ipa-cp.c (update_profiling_info): Ditto.
      	(update_specialized_profile): Ditto.
      	* tree-vect-loop-manip.c (slpeel_tree_peel_loop_to_edge): Ditto.
      	* cfg.c (update_bb_profile_for_threading): Add comment to suggest using
              rounding methods.
      	* sched-rgn.c (compute_dom_prob_ps): Ditto.
      	(compute_trg_info): Ditto.
      	* cfgrtl.c (force_nonfallthru_and_redirect): Ditto.
      	(purge_dead_edges): Ditto.
      	* loop-unswitch.c (unswitch_loop): Ditto.
      	* cgraphclones.c (cgraph_clone_edge): Ditto.
      	(cgraph_clone_node): Ditto.
      	* tree-inline.c (copy_bb): Ditto.
      	(copy_edges_for_bb): Ditto.
      	(initialize_cfun): Ditto.
      	(copy_cfg_body): Ditto.
      	(expand_call_inline): Ditto.
      
      From-SVN: r197595
      Teresa Johnson committed
    • cxx11.cc: Include <memory>. · d6222d4e
      2013-04-08  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* testsuite/libstdc++-prettyprinters/cxx11.cc: Include <memory>.
      
      From-SVN: r197594
      Paolo Carlini committed
    • cygwin.h (EXTRA_OS_CPP_BUILTINS): Replaced TARGET_CYGWIN64 by TARGET_64BIT. · 661e6bd7
      	* config/i386/cygwin.h (EXTRA_OS_CPP_BUILTINS): Replaced
      	TARGET_CYGWIN64 by TARGET_64BIT.
      
      From-SVN: r197593
      Kai Tietz committed