1. 03 Nov, 2017 12 commits
  2. 02 Nov, 2017 19 commits
  3. 01 Nov, 2017 9 commits
    • RISC-V: Use "@minus{}2 GB" instead of "-2 GB" in invoke.texi · 42fc5a70
      gcc/ChangeLog
      
      2017-11-01  Palmer Dabbelt  <palmer@dabbelt.com>
      
      	* doc/invoke.texi (RISC-V Options): Use "@minus{}2 GB", not "-2 GB".
      
      From-SVN: r254331
      Palmer Dabbelt committed
    • tree-ssa-ccp.c (ccp_folder): New class derived from substitute_and_fold_engine. · e10a635c
      	* tree-ssa-ccp.c (ccp_folder): New class derived from
      	substitute_and_fold_engine.
      	(ccp_folder::get_value): New member function.
      	(ccp_folder::fold_stmt): Renamed from ccp_fold_stmt.
      	(ccp_fold_stmt): Remove prototype.
      	(ccp_finalize): Call substitute_and_fold from the ccp_class.
      	* tree-ssa-copy.c (copy_folder): New class derived from
      	substitute_and_fold_engine.
      	(copy_folder::get_value): Renamed from get_value.
      	(fini_copy_prop): Call substitute_and_fold from copy_folder class.
      	* tree-vrp.c (vrp_folder): New class derived from
      	substitute_and_fold_engine.
      	(vrp_folder::fold_stmt): Renamed from vrp_fold_stmt.
      	(vrp_folder::get_value): New member function.
      	(vrp_finalize): Call substitute_and_fold from vrp_folder class.
      	(evrp_dom_walker::before_dom_children): Similarly for replace_uses_in.
      	* tree-ssa-propagate.h (substitute_and_fold_engine): New class to
      	provide a class interface to folder/substitute routines.
      	(ssa_prop_fold_stmt_fn): Remove typedef.
      	(ssa_prop_get_value_fn): Likewise.
      	(subsitute_and_fold): Remove prototype.
      	(replace_uses_in): Likewise.
      	* tree-ssa-propagate.c (substitute_and_fold_engine::replace_uses_in):
      	Renamed from replace_uses_in.  Call the virtual member function
      	(substitute_and_fold_engine::replace_phi_args_in): Similarly.
      	(substitute_and_fold_dom_walker): Remove initialization of
      	data member entries for calbacks.  Add substitute_and_fold_engine
      	member and initialize it.
      	(substitute_and_fold_dom_walker::before_dom_children0: Use the
      	member functions for get_value, replace_phi_args_in c
      	replace_uses_in, and fold_stmt calls.
      	(substitute_and_fold_engine::substitute_and_fold): Renamed from
      	substitute_and_fold.  Remove assert.   Update ctor call.
      
      From-SVN: r254330
      Jeff Law committed
    • tree-ssa-propagate.h (ssa_prop_visit_stmt_fn): Remove typedef. · d9a3704a
      	* tree-ssa-propagate.h (ssa_prop_visit_stmt_fn): Remove typedef.
      	(ssa_prop_visit_phi_fn): Likewise.
      	(class ssa_propagation_engine): New class to provide an interface
      	into ssa_propagate.
      	* tree-ssa-propagate.c (ssa_prop_visit_stmt): Remove file scoped
      	variable.
      	(ssa_prop_visit_phi): Likewise.
      	(ssa_propagation_engine::simulate_stmt): Moved into class.
      	Call visit_phi/visit_stmt from the class rather than via
      	file scoped static variables.
      	(ssa_propagation_engine::simulate_block): Moved into class.
      	(ssa_propagation_engine::process_ssa_edge_worklist): Similarly.
      	(ssa_propagation_engine::ssa_propagate): Similarly.  No longer
      	set file scoped statics for the visit_stmt/visit_phi callbacks.
      	* tree-complex.c (complex_propagate): New class derived from
      	ssa_propagation_engine.
      	(complex_propagate::visit_stmt): Renamed from complex_visit_stmt.
      	(complex_propagate::visit_phi): Renamed from complex_visit_phi.
      	(tree_lower_complex): Call ssa_propagate via the complex_propagate
      	class.
      	* tree-ssa-ccp.c: (ccp_propagate): New class derived from
      	ssa_propagation_engine.
      	(ccp_propagate::visit_phi): Renamed from ccp_visit_phi_node.
      	(ccp_propagate::visit_stmt): Renamed from ccp_visit_stmt.
      	(do_ssa_ccp): Call ssa_propagate from the ccp_propagate class.
      	* tree-ssa-copy.c (copy_prop): New class derived from
      	ssa_propagation_engine.
      	(copy_prop::visit_stmt): Renamed from copy_prop_visit_stmt.
      	(copy_prop::visit_phi): Renamed from copy_prop_visit_phi_node.
      	(execute_copy_prop): Call ssa_propagate from the copy_prop class.
      	* tree-vrp.c (vrp_prop): New class derived from ssa_propagation_engine.
      	(vrp_prop::visit_stmt): Renamed from vrp_visit_stmt.
      	(vrp_prop::visit_phi): Renamed from vrp_visit_phi_node.
      	(execute_vrp): Call ssa_propagate from the vrp_prop class.
      
      From-SVN: r254329
      Jeff Law committed
    • re PR rtl-optimization/82778 (crash: insn does not satisfy its constraints) · efc04f78
      	PR rtl-optimization/82778
      	PR rtl-optimization/82597
      	* compare-elim.c (struct comparison): Add in_a_setter field.
      	(find_comparison_dom_walker::before_dom_children): Remove killed
      	bitmap and df_simulate_find_defs call, instead walk the defs.
      	Compute last_setter and initialize in_a_setter.  Merge definitions
      	with first initialization for a few variables.
      	(try_validate_parallel): Use insn_invalid_p instead of
      	recog_memoized.  Return insn rather than just the pattern.
      	(try_merge_compare): Fix up comment.  Don't uselessly test if
      	in_a is a REG_P.  Use cmp->in_a_setter instead of walking UD
      	chains.
      	(execute_compare_elim_after_reload): Remove df_chain_add_problem
      	call.
      
      	* g++.dg/opt/pr82778.C: New test.
      
      2017-11-01  Michael Collison  <michael.collison@arm.com>
      
      	PR rtl-optimization/82597
      	* gcc.dg/pr82597.c: New test.
      
      From-SVN: r254328
      Jakub Jelinek committed
    • [AArch64] Minor rtx costs tweak · fe1447a1
      aarch64_rtx_costs uses the number of registers in a mode as the basis
      of SET costs.  This patch makes it get the number of registers from
      aarch64_hard_regno_nregs rather than repeating the calcalation inline.
      Handling SVE modes in aarch64_hard_regno_nregs is then enough to get
      the correct SET cost as well.
      
      2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* config/aarch64/aarch64.c (aarch64_rtx_costs): Use
      	aarch64_hard_regno_nregs to get the number of registers
      	in a mode.
      
      Reviewed-By: James Greenhalgh  <james.greenhalgh@arm.com>
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r254327
      Richard Sandiford committed
    • [AArch64] Rename the internal "Upl" constraint · ff1335e2
      The SVE port uses the public constraints "Upl" and "Upa" to mean
      "low predicate register" and "any predicate register" respectively.
      "Upl" was already used as an internal-only constraint by the
      addition patterns, so this patch renames it to "Uaa" ("two adds
      needed").
      
      2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* config/aarch64/constraints.md (Upl): Rename to...
      	(Uaa): ...this.
      	* config/aarch64/aarch64.md
      	(*zero_extend<SHORT:mode><GPI:mode>2_aarch64, *addsi3_aarch64_uxtw):
      	Update accordingly.
      
      Reviewed-By: James Greenhalgh  <james.greenhalgh@arm.com>
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r254326
      Richard Sandiford committed
    • [AArch64] Move code around · 0100c5f9
      This patch simply moves code around, in order to make the later
      patches easier to read, and to avoid forward declarations.
      It doesn't add the missing function comments because the interfaces
      will change in a later patch.
      
      2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* config/aarch64/aarch64.c (aarch64_add_constant_internal)
      	(aarch64_add_constant, aarch64_add_sp, aarch64_sub_sp): Move
      	earlier in file.
      
      Reviewed-by: James Greenhalgh <james.greenhalgh@arm.com>
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r254325
      Richard Sandiford committed
    • [AArch64] Generate permute patterns using rtx builders · 3f8334a5
      This patch replaces switch statements that call specific generator
      functions with code that constructs the rtl pattern directly.
      This seemed to scale better to SVE and also seems less error-prone.
      
      As a side-effect, the patch fixes the REV handling for diff==1,
      vmode==E_V4HFmode and adds missing support for diff==3,
      vmode==E_V4HFmode.
      
      To compensate for the lack of switches that check for specific modes,
      the patch makes aarch64_expand_vec_perm_const_1 reject permutes on
      single-element vectors (specifically V1DImode).
      
      2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* config/aarch64/aarch64.c (aarch64_evpc_trn, aarch64_evpc_uzp)
      	(aarch64_evpc_zip, aarch64_evpc_ext, aarch64_evpc_rev)
      	(aarch64_evpc_dup): Generate rtl direcly, rather than using
      	named expanders.
      	(aarch64_expand_vec_perm_const_1): Explicitly check for permutes
      	of a single element.
      	* config/aarch64/iterators.md: Add a comment above the permute
      	unspecs to say that they are generated directly by
      	aarch64_expand_vec_perm_const.
      	* config/aarch64/aarch64-simd.md: Likewise the permute instructions.
      
      Reviewed-by: James Greenhalgh <james.greenhalgh@arm.com>
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r254324
      Richard Sandiford committed
    • [PATCH] fix fdump-lang-raw ICE · c6108cbd
      https://gcc.gnu.org/ml/gcc-patches/2017-11/msg00037.html
      	* tree-dump.c (dequeue_and_dump): Use HAS_DECL_ASSEMBLER_NAME_P.
      
      From-SVN: r254323
      Nathan Sidwell committed