aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-slp.c
AgeCommit message (Collapse)AuthorFilesLines
2016-08-17re PR tree-optimization/71752 (ICE in compute_live_loop_exits, at ↵Alan Hayward1-26/+31
tree-ssa-loop-manip.c:229 w/ -O1 -ftree-vectorize) 2015-08-17 Alan Hayward <alan.hayward@arm.com> PR tree-optimization/71752 * tree-vect-loop.c (vectorizable_reduction): Keep SLP operand ordering. * tree-vect-slp.c (vect_get_slp_defs): Handle null operands. PR tree-optimization/71752 * gcc.dg/vect/pr71752.c: New From-SVN: r239542
2016-07-26use auto_sbitmap in various placesTrevor Saunders1-15/+5
gcc/ChangeLog: 2016-07-26 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> * bt-load.c (compute_out): Use auto_sbitmap class. (link_btr_uses): Likewise. * cfganal.c (mark_dfs_back_edges): Likewise. (post_order_compute): Likewise. (inverted_post_order_compute): Likewise. (pre_and_rev_post_order_compute_fn): Likewise. (single_pred_before_succ_order): Likewise. * cfgexpand.c (pass_expand::execute): Likewise. * cfgloop.c (verify_loop_structure): Likewise. * cfgloopmanip.c (fix_bb_placements): Likewise. (remove_path): Likewise. (update_dominators_in_loop): Likewise. * cfgrtl.c (break_superblocks): Likewise. * ddg.c (check_sccs): Likewise. (create_ddg_all_sccs): Likewise. * df-core.c (df_worklist_dataflow): Likewise. * dse.c (dse_step3): Likewise. * except.c (eh_region_outermost): Likewise. * function.c (thread_prologue_and_epilogue_insns): Likewise. * gcse.c (prune_expressions): Likewise. (prune_insertions_deletions): Likewise. * gimple-ssa-backprop.c (backprop::~backprop): Likewise. * graph.c (draw_cfg_nodes_no_loops): Likewise. * ira-lives.c (remove_some_program_points_and_update_live_ranges): Likewise. * lcm.c (compute_earliest): Likewise. (compute_farthest): Likewise. * loop-unroll.c (unroll_loop_constant_iterations): Likewise. (unroll_loop_runtime_iterations): Likewise. (unroll_loop_stupid): Likewise. * lower-subreg.c (decompose_multiword_subregs): Likewise. * lra-lives.c: Likewise. * lra.c (lra): Likewise. * modulo-sched.c (schedule_reg_moves): Likewise. (optimize_sc): Likewise. (get_sched_window): Likewise. (sms_schedule_by_order): Likewise. (check_nodes_order): Likewise. (order_nodes_of_sccs): Likewise. (order_nodes_in_scc): Likewise. * recog.c (split_all_insns): Likewise. * regcprop.c (pass_cprop_hardreg::execute): Likewise. * reload1.c (reload): Likewise. * sched-rgn.c (haifa_find_rgns): Likewise. (split_edges): Likewise. (compute_trg_info): Likewise. * sel-sched.c (init_seqno): Likewise. * store-motion.c (remove_reachable_equiv_notes): Likewise. * tree-into-ssa.c (update_ssa): Likewise. * tree-ssa-live.c (live_worklist): Likewise. * tree-ssa-loop-im.c (fill_always_executed_in): Likewise. * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): * Likewise. (try_peel_loop): Likewise. * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): * Likewise. * tree-ssa-pre.c (compute_antic): Likewise. * tree-ssa-reassoc.c (undistribute_ops_list): Likewise. * tree-stdarg.c (reachable_at_most_once): Likewise. * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Likewise. * var-tracking.c (vt_find_locations): Likewise. From-SVN: r238748
2016-07-06[6/7] Explicitly classify vector loads and storesRichard Sandiford1-4/+9
This is the main patch in the series. It adds a new enum and routines for classifying a vector load or store implementation. Originally there were three motivations: (1) Reduce cut-&-paste (2) Make the chosen vectorisation strategy more obvious. At the moment this is derived implicitly from various other bits of state (GROUPED, STRIDED, SLP, etc.) (3) Decouple the vectorisation strategy from those other bits of state, so that there can be a choice of implementation for a given scalar statement. The specific problem here is that we class: for (...) { ... = a[i * x]; ... = a[i * x + 1]; } as "strided and grouped" but: for (...) { ... = a[i * 7]; ... = a[i * 7 + 1]; } as "non-strided and grouped". Before the patch, "strided and grouped" loads would always try to use separate scalar loads while "non-strided and grouped" loads would always try to use load-and-permute. But load-and-permute is never supported for a group size of 7, so the effect was that the first loop was vectorisable and the second wasn't. It seemed odd that not knowing x (but accepting it could be 7) would allow more optimisation opportunities than knowing x is 7. Unfortunately, it looks like we underestimate the cost of separate scalar accesses on at least aarch64, so I've disabled (3) for now; see the "if" statement at the end of get_load_store_type. I think the patch still does (1) and (2), so that's the justification for it in its current form. It also means that (3) is now simply a case of removing the FIXME code, once the cost model problems have been sorted out. (I did wonder about adding a --param, but that seems overkill. I hope to get back to this during GCC 7 stage 1.) Tested on aarch64-linux-gnu and x86_64-linux-gnu. gcc/ * tree-vectorizer.h (vect_memory_access_type): New enum. (_stmt_vec_info): Add a memory_access_type field. (STMT_VINFO_MEMORY_ACCESS_TYPE): New macro. (vect_model_store_cost): Take an access type instead of a boolean. (vect_model_load_cost): Likewise. * tree-vect-slp.c (vect_analyze_slp_cost_1): Update calls to vect_model_store_cost and vect_model_load_cost. * tree-vect-stmts.c (vec_load_store_type): New enum. (vect_model_store_cost): Take an access type instead of a store_lanes_p boolean. Simplify tests. (vect_model_load_cost): Likewise, but for load_lanes_p. (get_group_load_store_type, get_load_store_type): New functions. (vectorizable_store): Use get_load_store_type. Record the access type in STMT_VINFO_MEMORY_ACCESS_TYPE. (vectorizable_load): Likewise. (vectorizable_mask_load_store): Likewise. Replace is_store variable with vls_type. From-SVN: r238038
2016-06-08tree-vect-data-refs.c (vect_analyze_data_refs): Remove debug newline.Alan Hayward1-12/+0
2016-06-08 Alan Hayward <alan.hayward@arm.com> gcc/ * tree-vect-data-refs.c (vect_analyze_data_refs): Remove debug newline. * tree-vect-loop-manip.c (slpeel_make_loop_iterate_ntimes): likewise. (vect_can_advance_ivs_p): likewise. (vect_update_ivs_after_vectorizer): likewise. * tree-vect-loop.c (vect_determine_vectorization_factor): likewise. (vect_analyze_scalar_cycles_1): likewise. (vect_analyze_loop_operations): likewise. (report_vect_op): likewise. (vect_is_slp_reduction): likewise. (vect_is_simple_reduction): likewise. (get_initial_def_for_induction): likewise. (vect_transform_loop): likewise. * tree-vect-patterns.c (vect_recog_dot_prod_pattern): likewise. (vect_recog_sad_pattern): likewise. (vect_recog_widen_sum_pattern): likewise. (vect_recog_widening_pattern): likewise. (vect_recog_divmod_pattern): likewise. * tree-vect-slp.c (vect-build-slp_tree_1): likewise. (vect_analyze_slp_instance): likewise. (vect_transform_slp_perm_load): likewise. (vect_schedule_slp_instance): likewise. From-SVN: r237198
2016-06-06re PR tree-optimization/71259 (GCC trunk emits wrong code)Jakub Jelinek1-2/+8
PR tree-optimization/71259 * tree-vect-slp.c (vect_get_constant_vectors): For VECTOR_BOOLEAN_TYPE_P, return all ones constant instead of one for constant op, and use COND_EXPR for non-constant. * gcc.dg/vect/pr71259.c: New test. From-SVN: r237147
2016-05-23re PR tree-optimization/58135 ([x86] Missed opportunities for partial SLP)Venkataramanan Kumar1-28/+31
Fix PR58135. 2016-05-23 Venkataramanan Kumar <venkataramanan.kumar@amd.com> PR tree-optimization/58135 * tree-vect-slp.c: When group size is not multiple of vector size, allow splitting of store group at vector boundary. 2016-05-23 Venkataramanan Kumar <venkataramanan.kumar@amd.com> * gcc.dg/vect/bb-slp-19.c: Remove XFAIL. * gcc.dg/vect/pr58135.c: Add new. * gfortran.dg/pr46519-1.f: Adjust test case. From-SVN: r236582
2016-05-19Fix memory leak in tree-vect-slp.cMartin Liska1-1/+4
* tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Release bitmap. From-SVN: r236468
2016-02-29re PR tree-optimization/69980 (Supposedly wrong SLP code emitted)Richard Biener1-0/+3
2016-02-19 Richard Biener <rguenther@suse.de> PR tree-optimization/69980 * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Update permutation of those we need to keep. * gfortran.dg/vect/pr69980.f90: New testcase. From-SVN: r233809
2016-02-22re PR tree-optimization/69882 (Excessive reduction statements generated by SLP)Richard Biener1-7/+13
2016-02-22 Richard Biener <rguenther@suse.de> PR tree-optimization/69882 * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Properly preserve permutations present because of gaps. (vect_supported_load_permutation_p): Always continue checking permutations after vect_attempt_slp_rearrange_stmts. * gfortran.dg/vect/pr69882.f90: New testcase. From-SVN: r233605
2016-02-11re PR target/65313 (Compilation error in lto profiledbootstrap on ↵Jakub Jelinek1-4/+2
powerpc64le-unknown-linux-gnu) PR target/65313 * tree-vect-slp.c (vect_schedule_slp_instance): Avoid -Wmaybe-uninitialized warning. From-SVN: r233337
2016-01-18re PR tree-optimization/69297 (Performance regression after r230020)Richard Biener1-0/+10
2016-01-18 Richard Biener <rguenther@suse.de> PR tree-optimization/69297 * tree-vect-slp.c (vect_bb_slp_scalar_cost): Count each scalar stmt at most once. (vect_bb_vectorization_profitable_p): Clear visited flag again. * gcc.dg/vect/costmodel/x86_64/costmodel-pr69297.c: New testcase. From-SVN: r232519
2016-01-18re PR tree-optimization/69170 (ICE (segfault) in find_uses_to_rename_use)Richard Biener1-2/+12
2016-01-18 Richard Biener <rguenther@suse.de> PR tree-optimization/69170 * tree-vect-slp.c (vect_build_slp_tree): Verify we are not building a vector from scalar results of a pattern stmt. * gcc.dg/torture/pr69170.c: New testcase. From-SVN: r232496
2016-01-15re PR tree-optimization/66856 (ICE in compute_live_loop_exits, at ↵Richard Biener1-14/+60
tree-ssa-loop-manip.c:234) 2016-01-15 Richard Biener <rguenther@suse.de> PR tree-optimization/66856 * tree-vect-loop.c (vect_transform_loop): Free SLP instances here. * tree-vect-slp.c (vect_free_slp_tree): Decrement stmt reference count. (vect_create_new_slp_node): Increment stmt reference count. (vect_get_and_check_slp_defs): Make sure stmts are nor already in an SLP tree before swapping operands. (vect_build_slp_tree): Likewise. (destroy_bb_vec_info): Free stmt info after SLP instances. * tree-vect-stmts.c (new_stmt_vec_info): Initialize reference count. * tree-vectorizer.h (struct _stmt_vec_info): Add num_slp_uses field. (STMT_VINFO_NUM_SLP_USES): New macro. * gcc.dg/torture/pr66856-1.c: New testcase. * gcc.dg/torture/pr66856-2.c: Likewise. From-SVN: r232435
2016-01-15re PR tree-optimization/68961 (Test case gcc.target/powerpc/pr60203.c fails ↵Richard Biener1-7/+9
since r231674) 2016-01-15 Richard Biener <rguenther@suse.de> PR tree-optimization/68961 * tree-vect-slp.c (vect_analyze_slp_cost_1): Consider cost of invariants in stores again. * gcc.dg/vect/costmodel/x86_64/costmodel-pr68961.c: New testcase. From-SVN: r232415
2016-01-14re PR tree-optimization/66856 (ICE in compute_live_loop_exits, at ↵Richard Biener1-78/+67
tree-ssa-loop-manip.c:234) 2016-01-14 Richard Biener <rguenther@suse.de> PR tree-optimization/66856 * tree-vect-slp.c (vect_build_slp_tree): Refactor to build SLP node only if it built successfully. (vect_analyze_slp_instance): Adjust. From-SVN: r232364
2016-01-12re PR tree-optimization/69168 (ICE in vect_analyze_loop_2, at ↵Richard Biener1-4/+4
tree-vect-loop.c:2182) 2016-01-12 Richard Biener <rguenther@suse.de> PR tree-optimization/69168 * tree-vect-loop.c (vect_analyze_loop_2): Reset both main and pattern stmt SLP type. * tree-vect-slp.c (vect_detect_hybrid_slp_stmts): Patterns may end up unused so cope with that case. * gcc.dg/torture/pr69168.c: New testcase. From-SVN: r232261
2016-01-11re PR tree-optimization/69207 (gcc.target/aarch64/vldN_1.c ICEs at -O3)Jakub Jelinek1-4/+1
PR tree-optimization/69207 * tree-vect-slp.c (vect_get_constant_vectors): For VECTOR_BOOLEAN_TYPE_P, assert op has integral type instead of fold_convertible_p to vector_type's element type, and always use VCE for non-VECTOR_BOOLEAN_TYPE_P. From-SVN: r232233
2016-01-08[PATCH] Fix PR68707Alan Lawrence1-0/+30
gcc/: * tree-vect-slp.c (vect_analyze_slp_instance): Cancel permuted SLP instances that can be handled via vect_load_lanes. gcc/testsuite/: * lib/target-supports.exp (check_effective_target_vect_load_lanes): New. * gcc.dg/vect/slp-perm-1.c: Look for vect_load_lanes instead of SLP on platforms supporting it. * gcc.dg/vect/slp-perm-2.c: Likewise. * gcc.dg/vect/slp-perm-3.c: Likewise. * gcc.dg/vect/slp-perm-5.c: Likewise. * gcc.dg/vect/slp-perm-7.c: Likewise. * gcc.dg/vect/slp-perm-8.c: Likewise. * gcc.dg/vect/slp-perm-6.c: Look for vect_load_lanes in addition to SLP on platforms supporting it. Co-Authored-By: Richard Biener <rguenther@suse.de> From-SVN: r232174
2016-01-08re PR tree-optimization/69083 (ICE at -O3 in 64-bit mode on x86_64-linux-gnu ↵Jakub Jelinek1-3/+16
(verify_gimple failed)) PR tree-optimization/69083 * tree-vect-slp.c (vect_get_constant_vectors): For VECTOR_BOOLEAN_TYPE_P assert op is fold_convertible_p to vector_type's element type. If op is fold_convertible_p to vector_type's element type, use NOP_EXPR instead of VCE. * gcc.dg/vect/pr69083.c: New test. From-SVN: r232153
2016-01-04Update copyright years.Jakub Jelinek1-1/+1
From-SVN: r232055
2015-12-17re PR tree-optimization/68946 (ICE at -O3 on x86_64-linux-gnu in both 32- ↵Richard Biener1-17/+13
and 64-bit modes (in vect_analyze_stmt, at tree-vect-stmts.c:8013)) 2015-12-17 Richard Biener <rguenther@suse.de> PR tree-optimization/68946 * tree-vect-slp.c (vect_slp_analyze_node_operations): Push SLP def type to stmt operands one stmt at a time. * gcc.dg/torture/pr68946.c: New testcase. From-SVN: r231770
2015-12-16re PR tree-optimization/68861 (FAIL: libgomp.fortran/vla8.f90 -O3 -g ↵Richard Biener1-3/+21
execution test) 2015-12-16 Richard Biener <rguenther@suse.de> PR tree-optimization/68861 * tree-vect-slp.c (vect_build_slp_tree): Properly handle duplicate stmts when applying swapping to stmts. From-SVN: r231689
2015-12-16re PR tree-optimization/68892 (Excessive dead loads produced by BB ↵Richard Biener1-27/+21
vectorization) 2015-12-16 Richard Biener <rguenther@suse.de> PR tree-optimization/68892 * tree-vect-slp.c (vect_analyze_slp_cost_1): Properly compute cost for permuted loads. * gcc.dg/vect/bb-slp-pr68892.c: New testcase. From-SVN: r231674
2015-12-14re PR tree-optimization/68707 (testcase gcc.dg/vect/O3-pr36098.c vectorized ↵Richard Biener1-27/+0
using VEC_PERM_EXPR rather than VEC_LOAD_LANES) 2015-12-10 Richard Biener <rguenther@suse.de> PR tree-optimization/68707 PR tree-optimization/67323 * tree-vect-slp.c (vect_analyze_slp_instance): Drop SLP instances if they can be vectorized using load/store-lane instructions. From-SVN: r231620
2015-12-14re PR middle-end/68852 (ICE in vect_is_simple_use (tree-vect-stmts.c:8750) ↵Richard Biener1-40/+97
using -O3) 2015-12-14 Richard Biener <rguenther@suse.de> PR tree-optimization/68852 * tree-vectorizer.h (struct _slp_tree): Add def_type member. (SLP_TREE_DEF_TYPE): New accessor. * tree-vect-stmts.c (vect_is_simple_use): Remove BB vectorization hack. * tree-vect-slp.c (vect_create_new_slp_node): Initialize SLP_TREE_DEF_TYPE. (vect_build_slp_tree): When a node is to be built up from scalars do not push a NULL as child but instead set its def_type to vect_external_def. (vect_analyze_slp_cost_1): Check for child def-type instead of NULL. (vect_detect_hybrid_slp_stmts): Likewise. (vect_bb_slp_scalar_cost): Likewise. (vect_get_slp_defs): Likewise. (vect_slp_analyze_node_operations): Likewise. Before processing node push the children def-types to the underlying stmts vinfo and restore it afterwards. (vect_schedule_slp_instance): Likewise. (vect_slp_analyze_bb_1): Do not mark stmts not in SLP instances as not vectorizable. * g++.dg/torture/pr68852.C: New testcase. From-SVN: r231619
2015-12-14re PR tree-optimization/68775 (spec2006 test case 465.tonto fails with the ↵Richard Biener1-11/+14
gcc 6.0 fortran compiler) 2015-12-14 Richard Biener <rguenther@suse.de> PR tree-optimization/68775 * tree-vect-slp.c (vect_build_slp_tree): Make sure to apply a operand swapping even if replacing the op with scalars. From-SVN: r231617
2015-12-10re PR tree-optimization/68817 (internal compiler error: Segmentation fault ↵Richard Biener1-0/+2
(program f951)) 2015-12-10 Richard Biener <rguenther@suse.de> PR tree-optimization/68817 * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Detect gaps early. * gfortran.dg/pr68817.f90: New testcase. From-SVN: r231508
2015-12-03re PR tree-optimization/66051 (can't vectorize reductions inside an SLP group)Richard Biener1-64/+11
2015-12-03 Richard Biener <rguenther@suse.de> PR tree-optimization/66051 * tree-vect-slp.c (vect_build_slp_tree_1): Remove restriction on load group size. Do not pass in vectorization_factor. (vect_transform_slp_perm_load): Do not require any permute support. (vect_build_slp_tree): Do not pass in vectorization factor. (vect_analyze_slp_instance): Do not compute vectorization factor estimate. Use vector size instead of vectorization factor estimate to split store groups for BB vectorization. * gcc.dg/vect/slp-42.c: New testcase. From-SVN: r231225
2015-11-27re PR tree-optimization/68553 (gcc.dg/vect/pr68445.c FAILs)Richard Biener1-12/+28
2015-11-27 Richard Biener <rguenther@suse.de> PR tree-optimization/68553 * tree-vect-slp.c (vect_create_mask_and_perm): Skip VEC_PERM_EXPR generation for 1:1 permutations. (vect_transform_slp_perm_load): Detect 1:1 permutations. From-SVN: r231006
2015-11-27re PR tree-optimization/68553 (gcc.dg/vect/pr68445.c FAILs)Richard Biener1-176/+75
2015-11-27 Richard Biener <rguenther@suse.de> PR tree-optimization/68553 * tree-vect-slp.c (vect_get_mask_element): Remove. (vect_transform_slp_perm_load): Implement in a simpler way. * gcc.dg/vect/pr45752.c: Adjust. * gcc.dg/vect/slp-perm-4.c: Likewise. From-SVN: r230993
2015-11-25re PR tree-optimization/68492 (internal compiler error: in ↵Richard Biener1-0/+29
vect_is_simple_use, at tree-vect-stmts.c:8266) 2015-11-25 Richard Biener <rguenther@suse.de> PR tree-optimization/68492 * tree-vect-slp.c (vect_build_slp_tree): Consistently build up op from scalars after operand swapping. From-SVN: r230855
2015-11-23re PR tree-optimization/68445 (ICE: internal compiler error: in operator[], ↵Richard Biener1-5/+7
at vec.h) 2015-11-23 Richard Biener <rguenther@suse.de> PR tree-optimization/68445 * tree-vect-slp.c (vect_create_mask_and_perm): Properly use two different strides. * gcc.dg/vect/pr68445.c: New testcase. From-SVN: r230737
2015-11-13PR/67682, break SLP groups up if only some elements matchAlan Lawrence1-1/+84
gcc/: * tree-vect-slp.c (vect_split_slp_store_group): New. (vect_analyze_slp_instance): During basic block SLP, recurse on subgroups if vect_build_slp_tree fails after 1st vector. gcc/testsuite/: * gcc.dg/vect/bb-slp-7.c (main1): Make subgroups non-isomorphic. * gcc.dg/vect/bb-slp-subgroups-1.c: New. * gcc.dg/vect/bb-slp-subgroups-2.c: New. * gcc.dg/vect/bb-slp-subgroups-3.c: New. From-SVN: r230330
2015-11-13re PR tree-optimization/68306 (ICE: in vectorizable_store, at ↵Richard Biener1-0/+7
tree-vect-stmts.c:5651) 2015-11-13 Richard Biener <rguenther@suse.de> PR tree-optimization/68306 * tree-vect-data-refs.c (verify_data_ref_alignment): Move loop related checks ... (vect_verify_datarefs_alignment): ... here. (vect_slp_analyze_and_verify_node_alignment): Compute and verify alignment of the single DR that it matters. * tree-vect-stmts.c (vectorizable_store): Add an assert. (vectorizable_load): Add a comment. * tree-vect-slp.c (vect_analyze_slp_cost_1): Fix DR used for determining load cost. * gcc.dg/pr68306.c: Adjust. * gcc.dg/pr68306-2.c: New testcase. * gcc.dg/pr68306-3.c: Likewise. From-SVN: r230310
2015-11-13tree-vect-loop.c (vect_determine_vectorization_factor): Check mix of boolean ↵Ilya Enkovich1-2/+52
and integer vectors in a single statement. gcc/ * tree-vect-loop.c (vect_determine_vectorization_factor): Check mix of boolean and integer vectors in a single statement. * tree-vect-slp.c (vect_mask_constant_operand_p): New. (vect_get_constant_vectors): Use vect_mask_constant_operand_p to determine constant type. * tree-vect-stmts.c (vectorizable_comparison): Provide vectype for loop invariants. gcc/testsuite/ * g++.dg/vect/simd-bool-comparison-1.cc: New test. * g++.dg/vect/simd-bool-comparison-2.cc: New test. From-SVN: r230309
2015-11-12tree-vectorizer.h (vect_slp_analyze_data_ref_dependences): Rename to ↵Richard Biener1-37/+19
vect_slp_analyze_instance_dependence. 2015-11-12 Richard Biener <rguenther@suse.de> * tree-vectorizer.h (vect_slp_analyze_data_ref_dependences): Rename to vect_slp_analyze_instance_dependence. * tree-vect-data-refs.c (vect_slp_analyze_data_ref_dependence): Remove WAR special-case. (vect_slp_analyze_node_dependences): Instead add more specific code here, not relying on other instances being vectorized. (vect_slp_analyze_instance_dependence): Adjust accordingly. * tree-vect-slp.c (vect_build_slp_tree_1): Remove excessive vertical space in dump files. (vect_print_slp_tree): Likewise. (vect_analyze_slp_instance): Dump a header for the final SLP tree. (vect_slp_analyze_bb_1): Delay computing relevant stmts and not vectorized stmts until after dependence analysis removed instances. Merge alignment and dependence checks. * tree-vectorizer.c (pass_slp_vectorize::execute): Clear visited flag on all stmts. From-SVN: r230262
2015-11-12re PR tree-optimization/68305 (ICE on valid code at -O3 on x86_64-linux-gnu: ↵Ilya Enkovich1-11/+13
tree check: expected class ‘expression’, have ‘exceptional’ (ssa_name) in tree_operand_check, at tree.h:3436) gcc/ PR tree-optimization/68305 * tree-vect-slp.c (vect_get_constant_vectors): Support COND_EXPR with SSA_NAME as a condition. gcc/testsuite/ PR tree-optimization/68305 * gcc.dg/vect/pr68305.c: New test. From-SVN: r230252
2015-11-11tree-vectorizer.h (vect_slp_analyze_and_verify_instance_alignment): Declare.Richard Biener1-54/+56
2015-11-11 Richard Biener <rguenther@suse.de> * tree-vectorizer.h (vect_slp_analyze_and_verify_instance_alignment): Declare. (vect_analyze_data_refs_alignment): Make loop vect specific. (vect_verify_datarefs_alignment): Likewise. * tree-vect-data-refs.c (vect_slp_analyze_data_ref_dependences): Add missing continue. (vect_compute_data_ref_alignment): Export. (vect_compute_data_refs_alignment): Merge into... (vect_analyze_data_refs_alignment): ... this. (verify_data_ref_alignment): Split out from ... (vect_verify_datarefs_alignment): ... here. (vect_slp_analyze_and_verify_node_alignment): New function. (vect_slp_analyze_and_verify_instance_alignment): Likewise. * tree-vect-slp.c (vect_supported_load_permutation_p): Remove misplaced checks on alignment. (vect_slp_analyze_bb_1): Add fatal output parameter. Do alignment analysis after SLP discovery and do it per instance. (vect_slp_bb): When vect_slp_analyze_bb_1 fatally failed do not bother to re-try using different vector sizes. From-SVN: r230173
2015-11-10optabs-query.h (get_vcond_mask_icode): New.Ilya Enkovich1-20/+2
gcc/ 2015-11-10 Ilya Enkovich <enkovich.gnu@gmail.com> * optabs-query.h (get_vcond_mask_icode): New. * optabs-tree.c (expand_vec_cond_expr_p): Use get_vcond_mask_icode for VEC_COND_EXPR with mask. * optabs.c (expand_vec_cond_mask_expr): New. (expand_vec_cond_expr): Use get_vcond_mask_icode when possible. * optabs.def (vcond_mask_optab): New. * tree-vect-patterns.c (vect_recog_bool_pattern): Don't generate redundant comparison for COND_EXPR. * tree-vect-stmts.c (vect_is_simple_cond): Allow SSA_NAME as a condition. (vectorizable_condition): Likewise. * tree-vect-slp.c (vect_get_and_check_slp_defs): Allow cond_exp with no embedded comparison. (vect_build_slp_tree_1): Likewise. From-SVN: r230101
2015-11-10expr.c (do_store_flag): Use expand_vec_cmp_expr for mask results.Ilya Enkovich1-3/+24
gcc/ * expr.c (do_store_flag): Use expand_vec_cmp_expr for mask results. (const_vector_mask_from_tree): New. (const_vector_from_tree): Use const_vector_mask_from_tree for boolean vectors. * optabs-query.h (get_vec_cmp_icode): New. * optabs-tree.c (expand_vec_cmp_expr_p): New. * optabs-tree.h (expand_vec_cmp_expr_p): New. * optabs.c (vector_compare_rtx): Add OPNO arg. (expand_vec_cond_expr): Adjust to vector_compare_rtx change. (expand_vec_cmp_expr): New. * optabs.def (vec_cmp_optab): New. (vec_cmpu_optab): New. * optabs.h (expand_vec_cmp_expr): New. * tree-vect-generic.c (expand_vector_comparison): Add vector comparison optabs check. * tree-vect-loop.c (vect_determine_vectorization_factor): Ignore mask operations for VF. Add mask type computation. * tree-vect-stmts.c (get_mask_type_for_scalar_type): New. (vectorizable_comparison): New. (vect_analyze_stmt): Add vectorizable_comparison. (vect_transform_stmt): Likewise. (vect_init_vector): Support boolean vector invariants. (vect_get_vec_def_for_operand): Add VECTYPE arg. (vectorizable_condition): Directly provide vectype for invariants used in comparison. * tree-vectorizer.h (get_mask_type_for_scalar_type): New. (enum vect_var_kind): Add vect_mask_var. (enum stmt_vec_info_type): Add comparison_vec_info_type. (vectorizable_comparison): New. (vect_get_vec_def_for_operand): Add VECTYPE arg. * tree-vect-data-refs.c (vect_get_new_vect_var): Support vect_mask_var. (vect_create_destination_var): Likewise. * tree-vect-patterns.c (check_bool_pattern): Check fails if we can vectorize comparison directly. (search_type_for_mask): New. (vect_recog_bool_pattern): Support cases when bool pattern check fails. * tree-vect-slp.c (vect_build_slp_tree_1): Allow comparison statements. (vect_get_constant_vectors): Support boolean vector constants. * config/i386/i386-protos.h (ix86_expand_mask_vec_cmp): New. (ix86_expand_int_vec_cmp): New. (ix86_expand_fp_vec_cmp): New. * config/i386/i386.c (ix86_expand_sse_cmp): Allow NULL for op_true and op_false. (ix86_int_cmp_code_to_pcmp_immediate): New. (ix86_fp_cmp_code_to_pcmp_immediate): New. (ix86_cmp_code_to_pcmp_immediate): New. (ix86_expand_mask_vec_cmp): New. (ix86_expand_fp_vec_cmp): New. (ix86_expand_int_sse_cmp): New. (ix86_expand_int_vcond): Use ix86_expand_int_sse_cmp. (ix86_expand_int_vec_cmp): New. (ix86_get_mask_mode): New. (TARGET_VECTORIZE_GET_MASK_MODE): New. * config/i386/sse.md (avx512fmaskmodelower): New. (vec_cmp<mode><avx512fmaskmodelower>): New. (vec_cmp<mode><sseintvecmodelower>): New. (vec_cmpv2div2di): New. (vec_cmpu<mode><avx512fmaskmodelower>): New. (vec_cmpu<mode><sseintvecmodelower>): New. (vec_cmpuv2div2di): New. gcc/testsuite/ * gcc.dg/vect/slp-cond-5.c: New test. From-SVN: r230098
2015-11-10re PR tree-optimization/56118 (Piecewise vector / complex initialization ↵Richard Biener1-3/+6
from constants not combined) 2015-11-10 Richard Biener <rguenther@suse.de> PR tree-optimization/56118 * tree-vect-slp.c (vect_bb_vectorization_profitable_p): Make equal cost favor vectorized version. * gcc.target/i386/pr56118.c: New testcase. From-SVN: r230091
2015-11-09re PR tree-optimization/56118 (Piecewise vector / complex initialization ↵Richard Biener1-1/+1
from constants not combined) 2015-11-09 Richard Biener <rguenther@suse.de> PR tree-optimization/56118 * tree-vectorizer.h (vect_find_last_scalar_stmt_in_slp): Declare. * tree-vect-slp.c (vect_find_last_scalar_stmt_in_slp): Export. * tree-vect-data-refs.c (vect_slp_analyze_node_dependences): New function. (vect_slp_analyze_data_ref_dependences): Instead of computing all dependences of the region DRs just analyze the code motions SLP vectorization will perform. Remove SLP instances that cannot have their store/load motions applied. (vect_analyze_data_refs): Allow DRs without a vectype in BB vectorization. * gcc.dg/vect/no-tree-sra-bb-slp-pr50730.c: Adjust. From-SVN: r230020
2015-11-06tree-vectorizer.h (struct _bb_vec_info): Add region_begin/end members.Richard Biener1-82/+102
2015-11-06 Richard Biener <rguenther@suse.de> * tree-vectorizer.h (struct _bb_vec_info): Add region_begin/end members. (vect_stmt_in_region_p): Declare. * tree-vect-slp.c (new_bb_vec_info): Work on a region. (destroy_bb_vec_info): Likewise. (vect_bb_slp_scalar_cost): Use vect_stmt_in_region_p. (vect_get_and_check_slp_defs): Likewise. (vect_slp_analyze_bb_1): Refactor to make it work on sub-BBs. (vect_slp_bb): Likewise. * tree-vect-patterns.c (vect_same_loop_or_bb_p): Implement in terms of vect_stmt_in_region_p. (vect_pattern_recog): Iterate over the BB region. * tree-vect-stmts.c (vect_is_simple_use): Use vect_stmt_in_region_p. * tree-vectorizer.c (vect_stmt_in_region_p): New function. (pass_slp_vectorize::execute): Initialize all stmt UIDs to -1. * config/i386/i386.c: Include gimple-iterator.h. * config/aarch64/aarch64.c: Likewise. * gcc.dg/vect/bb-slp-38.c: New testcase. From-SVN: r229842
2015-11-03tree-vect-data-refs.c (vect_analyze_data_refs): Do not collect data ↵Richard Biener1-73/+55
references here. 2015-11-03 Richard Biener <rguenther@suse.de> * tree-vect-data-refs.c (vect_analyze_data_refs): Do not collect data references here. * tree-vect-loop.c: Include cgraph.h. (vect_analyze_loop_2): Collect data references here. * tree-vect-slp.c (find_bb_location): Inline ... (vect_slp_bb): ... here. Renamed from vect_slp_analyze_bb. Factor in vect_slp_transform_bb. (vect_slp_transform_bb): Removed. (vect_slp_analyze_bb_1): Collect data references here. * tree-vectorizer.c (pass_slp_vectorize::execute): Call vect_slp_bb. * tree-vectorizer.h (vect_slp_bb): Declare. (vect_slp_analyze_bb): Remove. (vect_slp_transform_bb): Remove. (find_bb_location): Remove. (vect_analyze_data_refs): Remove stmt count reference parameter. From-SVN: r229712
2015-10-30alias.c: Remove unused headers.Andrew MacLeod1-5/+0
2015-10-30 Andrew MacLeod <amacleod@redhat.com> * alias.c: Remove unused headers. * asan.c: Likewise. * attribs.c: Likewise. * auto-inc-dec.c: Likewise. * auto-profile.c: Likewise. * bb-reorder.c: Likewise. * bitmap.c: Likewise. * bt-load.c: Likewise. * builtins.c: Likewise. * caller-save.c: Likewise. * calls.c: Likewise. * ccmp.c: Likewise. * cfg.c: Likewise. * cfganal.c: Likewise. * cfgbuild.c: Likewise. * cfgcleanup.c: Likewise. * cfgexpand.c: Likewise. * cfghooks.c: Likewise. * cfgloop.c: Likewise. * cfgloopanal.c: Likewise. * cfgloopmanip.c: Likewise. * cfgrtl.c: Likewise. * cgraph.c: Likewise. * cgraphbuild.c: Likewise. * cgraphclones.c: Likewise. * cgraphunit.c: Likewise. * cilk-common.c: Likewise. * combine-stack-adj.c: Likewise. * combine.c: Likewise. * compare-elim.c: Likewise. * convert.c: Likewise. * coverage.c: Likewise. * cppbuiltin.c: Likewise. * cprop.c: Likewise. * cse.c: Likewise. * cselib.c: Likewise. * data-streamer-in.c: Likewise. * data-streamer-out.c: Likewise. * data-streamer.c: Likewise. * dbxout.c: Likewise. * dce.c: Likewise. * ddg.c: Likewise. * debug.c: Likewise. * df-core.c: Likewise. * df-problems.c: Likewise. * df-scan.c: Likewise. * dfp.c: Likewise. * dojump.c: Likewise. * dominance.c: Likewise. * domwalk.c: Likewise. * double-int.c: Likewise. * dse.c: Likewise. * dumpfile.c: Likewise. * dwarf2asm.c: Likewise. * dwarf2cfi.c: Likewise. * dwarf2out.c: Likewise. * emit-rtl.c: Likewise. * except.c: Likewise. * explow.c: Likewise. * expmed.c: Likewise. * expr.c: Likewise. * final.c: Likewise. * fixed-value.c: Likewise. * fold-const.c: Likewise. * function.c: Likewise. * fwprop.c: Likewise. * gcse.c: Likewise. * generic-match-head.c: Likewise. * ggc-common.c: Likewise. * gimple-builder.c: Likewise. * gimple-expr.c: Likewise. * gimple-fold.c: Likewise. * gimple-iterator.c: Likewise. * gimple-low.c: Likewise. * gimple-match-head.c: Likewise. * gimple-pretty-print.c: Likewise. * gimple-ssa-isolate-paths.c: Likewise. * gimple-ssa-strength-reduction.c: Likewise. * gimple-streamer-in.c: Likewise. * gimple-streamer-out.c: Likewise. * gimple-walk.c: Likewise. * gimple.c: Likewise. * gimplify-me.c: Likewise. * gimplify.c: Likewise. * godump.c: Likewise. * graph.c: Likewise. * graphds.c: Likewise. * haifa-sched.c: Likewise. * hw-doloop.c: Likewise. * ifcvt.c: Likewise. * init-regs.c: Likewise. * internal-fn.c: Likewise. * ipa-chkp.c: Likewise. * ipa-comdats.c: Likewise. * ipa-cp.c: Likewise. * ipa-devirt.c: Likewise. * ipa-icf-gimple.c: Likewise. * ipa-icf.c: Likewise. * ipa-inline-analysis.c: Likewise. * ipa-inline-transform.c: Likewise. * ipa-inline.c: Likewise. * ipa-polymorphic-call.c: Likewise. * ipa-profile.c: Likewise. * ipa-prop.c: Likewise. * ipa-pure-const.c: Likewise. * ipa-ref.c: Likewise. * ipa-reference.c: Likewise. * ipa-split.c: Likewise. * ipa-utils.c: Likewise. * ipa-visibility.c: Likewise. * ipa.c: Likewise. * ira-build.c: Likewise. * ira-color.c: Likewise. * ira-conflicts.c: Likewise. * ira-costs.c: Likewise. * ira-emit.c: Likewise. * ira-lives.c: Likewise. * ira.c: Likewise. * jump.c: Likewise. * langhooks.c: Likewise. * lcm.c: Likewise. * lists.c: Likewise. * loop-doloop.c: Likewise. * loop-init.c: Likewise. * loop-invariant.c: Likewise. * loop-iv.c: Likewise. * loop-unroll.c: Likewise. * lower-subreg.c: Likewise. * lra-assigns.c: Likewise. * lra-coalesce.c: Likewise. * lra-constraints.c: Likewise. * lra-eliminations.c: Likewise. * lra-lives.c: Likewise. * lra-remat.c: Likewise. * lra-spills.c: Likewise. * lra.c: Likewise. * lto-cgraph.c: Likewise. * lto-compress.c: Likewise. * lto-opts.c: Likewise. * lto-section-in.c: Likewise. * lto-section-out.c: Likewise. * lto-streamer-in.c: Likewise. * lto-streamer-out.c: Likewise. * lto-streamer.c: Likewise. * mcf.c: Likewise. * mode-switching.c: Likewise. * modulo-sched.c: Likewise. * optabs.c: Likewise. * opts-global.c: Likewise. * passes.c: Likewise. * plugin.c: Likewise. * postreload-gcse.c: Likewise. * postreload.c: Likewise. * predict.c: Likewise. * print-tree.c: Likewise. * profile.c: Likewise. * real.c: Likewise. * realmpfr.c: Likewise. * recog.c: Likewise. * ree.c: Likewise. * reg-stack.c: Likewise. * regcprop.c: Likewise. * reginfo.c: Likewise. * regrename.c: Likewise. * regstat.c: Likewise. * reload.c: Likewise. * reload1.c: Likewise. * reorg.c: Likewise. * resource.c: Likewise. * rtl-chkp.c: Likewise. * rtl-error.c: Likewise. * rtlanal.c: Likewise. * rtlhooks.c: Likewise. * sanopt.c: Likewise. * sched-deps.c: Likewise. * sched-ebb.c: Likewise. * sched-rgn.c: Likewise. * sdbout.c: Likewise. * sel-sched-dump.c: Likewise. * sel-sched-ir.c: Likewise. * sel-sched.c: Likewise. * sese.c: Likewise. * shrink-wrap.c: Likewise. * simplify-rtx.c: Likewise. * stack-ptr-mod.c: Likewise. * statistics.c: Likewise. * stmt.c: Likewise. * stor-layout.c: Likewise. * store-motion.c: Likewise. * stringpool.c: Likewise. * symtab.c: Likewise. * target-globals.c: Likewise. * targhooks.c: Likewise. * toplev.c: Likewise. * tracer.c: Likewise. * trans-mem.c: Likewise. * tree-affine.c: Likewise. * tree-call-cdce.c: Likewise. * tree-cfg.c: Likewise. * tree-cfgcleanup.c: Likewise. * tree-chkp-opt.c: Likewise. * tree-chkp.c: Likewise. * tree-chrec.c: Likewise. * tree-complex.c: Likewise. * tree-data-ref.c: Likewise. * tree-dfa.c: Likewise. * tree-diagnostic.c: Likewise. * tree-dump.c: Likewise. * tree-eh.c: Likewise. * tree-emutls.c: Likewise. * tree-if-conv.c: Likewise. * tree-inline.c: Likewise. * tree-into-ssa.c: Likewise. * tree-iterator.c: Likewise. * tree-loop-distribution.c: Likewise. * tree-nested.c: Likewise. * tree-nrv.c: Likewise. * tree-object-size.c: Likewise. * tree-outof-ssa.c: Likewise. * tree-parloops.c: Likewise. * tree-phinodes.c: Likewise. * tree-predcom.c: Likewise. * tree-pretty-print.c: Likewise. * tree-profile.c: Likewise. * tree-scalar-evolution.c: Likewise. * tree-sra.c: Likewise. * tree-ssa-address.c: Likewise. * tree-ssa-alias.c: Likewise. * tree-ssa-ccp.c: Likewise. * tree-ssa-coalesce.c: Likewise. * tree-ssa-copy.c: Likewise. * tree-ssa-dce.c: Likewise. * tree-ssa-dse.c: Likewise. * tree-ssa-forwprop.c: Likewise. * tree-ssa-ifcombine.c: Likewise. * tree-ssa-live.c: Likewise. * tree-ssa-loop-ch.c: Likewise. * tree-ssa-loop-im.c: Likewise. * tree-ssa-loop-ivcanon.c: Likewise. * tree-ssa-loop-ivopts.c: Likewise. * tree-ssa-loop-manip.c: Likewise. * tree-ssa-loop-niter.c: Likewise. * tree-ssa-loop-prefetch.c: Likewise. * tree-ssa-loop-unswitch.c: Likewise. * tree-ssa-loop.c: Likewise. * tree-ssa-math-opts.c: Likewise. * tree-ssa-operands.c: Likewise. * tree-ssa-phiopt.c: Likewise. * tree-ssa-phiprop.c: Likewise. * tree-ssa-pre.c: Likewise. * tree-ssa-propagate.c: Likewise. * tree-ssa-reassoc.c: Likewise. * tree-ssa-scopedtables.c: Likewise. * tree-ssa-sink.c: Likewise. * tree-ssa-strlen.c: Likewise. * tree-ssa-structalias.c: Likewise. * tree-ssa-tail-merge.c: Likewise. * tree-ssa-ter.c: Likewise. * tree-ssa-threadupdate.c: Likewise. * tree-ssa-uncprop.c: Likewise. * tree-ssa-uninit.c: Likewise. * tree-ssa.c: Likewise. * tree-ssanames.c: Likewise. * tree-stdarg.c: Likewise. * tree-streamer-in.c: Likewise. * tree-streamer-out.c: Likewise. * tree-streamer.c: Likewise. * tree-switch-conversion.c: Likewise. * tree-tailcall.c: Likewise. * tree-vect-data-refs.c: Likewise. * tree-vect-generic.c: Likewise. * tree-vect-loop-manip.c: Likewise. * tree-vect-loop.c: Likewise. * tree-vect-patterns.c: Likewise. * tree-vect-slp.c: Likewise. * tree-vect-stmts.c: Likewise. * tree-vectorizer.c: Likewise. * tree-vrp.c: Likewise. * tree.c: Likewise. * tsan.c: Likewise. * ubsan.c: Likewise. * value-prof.c: Likewise. * var-tracking.c: Likewise. * varasm.c: Likewise. * varpool.c: Likewise. * vmsdbgout.c: Likewise. * vtable-verify.c: Likewise. * web.c: Likewise. * wide-int-print.cc: Likewise. * wide-int.cc: Likewise. * xcoffout.c: Likewise. From-SVN: r229585
2015-10-29alias.c: Reorder #include statements and remove duplicates.Andrew MacLeod1-10/+9
2015-10-29 Andrew MacLeod <amacleod@redhat.com> * alias.c: Reorder #include statements and remove duplicates. * asan.c: Likewise. * attribs.c: Likewise. * auto-inc-dec.c: Likewise. * auto-profile.c: Likewise. * bb-reorder.c: Likewise. * bt-load.c: Likewise. * builtins.c: Likewise. * caller-save.c: Likewise. * calls.c: Likewise. * ccmp.c: Likewise. * cfg.c: Likewise. * cfganal.c: Likewise. * cfgbuild.c: Likewise. * cfgcleanup.c: Likewise. * cfgexpand.c: Likewise. * cfghooks.c: Likewise. * cfgloop.c: Likewise. * cfgloopanal.c: Likewise. * cfgloopmanip.c: Likewise. * cfgrtl.c: Likewise. * cgraph.c: Likewise. * cgraphbuild.c: Likewise. * cgraphclones.c: Likewise. * cgraphunit.c: Likewise. * cilk-common.c: Likewise. * combine-stack-adj.c: Likewise. * combine.c: Likewise. * compare-elim.c: Likewise. * convert.c: Likewise. * coverage.c: Likewise. * cppbuiltin.c: Likewise. * cprop.c: Likewise. * cse.c: Likewise. * cselib.c: Likewise. * data-streamer-in.c: Likewise. * data-streamer-out.c: Likewise. * data-streamer.c: Likewise. * dbxout.c: Likewise. * dce.c: Likewise. * ddg.c: Likewise. * debug.c: Likewise. * df-core.c: Likewise. * df-problems.c: Likewise. * df-scan.c: Likewise. * dfp.c: Likewise. * dojump.c: Likewise. * dominance.c: Likewise. * double-int.c: Likewise. * dse.c: Likewise. * dumpfile.c: Likewise. * dwarf2asm.c: Likewise. * dwarf2cfi.c: Likewise. * dwarf2out.c: Likewise. * emit-rtl.c: Likewise. * except.c: Likewise. * explow.c: Likewise. * expmed.c: Likewise. * expr.c: Likewise. * final.c: Likewise. * fixed-value.c: Likewise. * fold-const.c: Likewise. * function.c: Likewise. * fwprop.c: Likewise. * gcse.c: Likewise. * generic-match-head.c: Likewise. * ggc-common.c: Likewise. * gimple-builder.c: Likewise. * gimple-expr.c: Likewise. * gimple-fold.c: Likewise. * gimple-iterator.c: Likewise. * gimple-low.c: Likewise. * gimple-match-head.c: Likewise. * gimple-pretty-print.c: Likewise. * gimple-ssa-isolate-paths.c: Likewise. * gimple-ssa-strength-reduction.c: Likewise. * gimple-streamer-in.c: Likewise. * gimple-streamer-out.c: Likewise. * gimple-walk.c: Likewise. * gimple.c: Likewise. * gimplify-me.c: Likewise. * gimplify.c: Likewise. * godump.c: Likewise. * graph.c: Likewise. * graphite-poly.c: Likewise. * haifa-sched.c: Likewise. * hw-doloop.c: Likewise. * ifcvt.c: Likewise. * incpath.c: Likewise. * init-regs.c: Likewise. * internal-fn.c: Likewise. * ipa-chkp.c: Likewise. * ipa-comdats.c: Likewise. * ipa-cp.c: Likewise. * ipa-devirt.c: Likewise. * ipa-icf-gimple.c: Likewise. * ipa-icf.c: Likewise. * ipa-inline-analysis.c: Likewise. * ipa-inline-transform.c: Likewise. * ipa-inline.c: Likewise. * ipa-polymorphic-call.c: Likewise. * ipa-profile.c: Likewise. * ipa-prop.c: Likewise. * ipa-pure-const.c: Likewise. * ipa-ref.c: Likewise. * ipa-reference.c: Likewise. * ipa-split.c: Likewise. * ipa-utils.c: Likewise. * ipa-visibility.c: Likewise. * ipa.c: Likewise. * ira-build.c: Likewise. * ira-color.c: Likewise. * ira-conflicts.c: Likewise. * ira-costs.c: Likewise. * ira-emit.c: Likewise. * ira-lives.c: Likewise. * ira.c: Likewise. * jump.c: Likewise. * langhooks.c: Likewise. * lcm.c: Likewise. * lists.c: Likewise. * loop-doloop.c: Likewise. * loop-init.c: Likewise. * loop-invariant.c: Likewise. * loop-iv.c: Likewise. * loop-unroll.c: Likewise. * lower-subreg.c: Likewise. * lra-assigns.c: Likewise. * lra-coalesce.c: Likewise. * lra-constraints.c: Likewise. * lra-eliminations.c: Likewise. * lra-lives.c: Likewise. * lra-remat.c: Likewise. * lra-spills.c: Likewise. * lra.c: Likewise. * lto-cgraph.c: Likewise. * lto-compress.c: Likewise. * lto-opts.c: Likewise. * lto-section-in.c: Likewise. * lto-section-out.c: Likewise. * lto-streamer-in.c: Likewise. * lto-streamer-out.c: Likewise. * lto-streamer.c: Likewise. * mode-switching.c: Likewise. * modulo-sched.c: Likewise. * omp-low.c: Likewise. * optabs.c: Likewise. * opts-global.c: Likewise. * passes.c: Likewise. * plugin.c: Likewise. * postreload-gcse.c: Likewise. * postreload.c: Likewise. * predict.c: Likewise. * print-tree.c: Likewise. * profile.c: Likewise. * real.c: Likewise. * realmpfr.c: Likewise. * recog.c: Likewise. * ree.c: Likewise. * reg-stack.c: Likewise. * regcprop.c: Likewise. * reginfo.c: Likewise. * regrename.c: Likewise. * regstat.c: Likewise. * reload.c: Likewise. * reload1.c: Likewise. * reorg.c: Likewise. * resource.c: Likewise. * rtl-chkp.c: Likewise. * rtl-error.c: Likewise. * rtlanal.c: Likewise. * rtlhooks.c: Likewise. * sanopt.c: Likewise. * sched-deps.c: Likewise. * sched-ebb.c: Likewise. * sched-rgn.c: Likewise. * sese.c: Likewise. * shrink-wrap.c: Likewise. * simplify-rtx.c: Likewise. * stack-ptr-mod.c: Likewise. * statistics.c: Likewise. * stmt.c: Likewise. * stor-layout.c: Likewise. * store-motion.c: Likewise. * stringpool.c: Likewise. * symtab.c: Likewise. * target-globals.c: Likewise. * targhooks.c: Likewise. * toplev.c: Likewise. * tracer.c: Likewise. * trans-mem.c: Likewise. * tree-affine.c: Likewise. * tree-call-cdce.c: Likewise. * tree-cfg.c: Likewise. * tree-cfgcleanup.c: Likewise. * tree-chkp-opt.c: Likewise. * tree-chkp.c: Likewise. * tree-chrec.c: Likewise. * tree-complex.c: Likewise. * tree-data-ref.c: Likewise. * tree-dfa.c: Likewise. * tree-diagnostic.c: Likewise. * tree-dump.c: Likewise. * tree-eh.c: Likewise. * tree-emutls.c: Likewise. * tree-if-conv.c: Likewise. * tree-inline.c: Likewise. * tree-into-ssa.c: Likewise. * tree-iterator.c: Likewise. * tree-loop-distribution.c: Likewise. * tree-nested.c: Likewise. * tree-nrv.c: Likewise. * tree-object-size.c: Likewise. * tree-outof-ssa.c: Likewise. * tree-parloops.c: Likewise. * tree-phinodes.c: Likewise. * tree-predcom.c: Likewise. * tree-pretty-print.c: Likewise. * tree-profile.c: Likewise. * tree-scalar-evolution.c: Likewise. * tree-sra.c: Likewise. * tree-ssa-address.c: Likewise. * tree-ssa-alias.c: Likewise. * tree-ssa-ccp.c: Likewise. * tree-ssa-coalesce.c: Likewise. * tree-ssa-copy.c: Likewise. * tree-ssa-dce.c: Likewise. * tree-ssa-dom.c: Likewise. * tree-ssa-dse.c: Likewise. * tree-ssa-forwprop.c: Likewise. * tree-ssa-ifcombine.c: Likewise. * tree-ssa-live.c: Likewise. * tree-ssa-loop-ch.c: Likewise. * tree-ssa-loop-im.c: Likewise. * tree-ssa-loop-ivcanon.c: Likewise. * tree-ssa-loop-ivopts.c: Likewise. * tree-ssa-loop-manip.c: Likewise. * tree-ssa-loop-niter.c: Likewise. * tree-ssa-loop-prefetch.c: Likewise. * tree-ssa-loop-unswitch.c: Likewise. * tree-ssa-loop.c: Likewise. * tree-ssa-math-opts.c: Likewise. * tree-ssa-operands.c: Likewise. * tree-ssa-phiopt.c: Likewise. * tree-ssa-phiprop.c: Likewise. * tree-ssa-pre.c: Likewise. * tree-ssa-propagate.c: Likewise. * tree-ssa-reassoc.c: Likewise. * tree-ssa-sccvn.c: Likewise. * tree-ssa-scopedtables.c: Likewise. * tree-ssa-sink.c: Likewise. * tree-ssa-strlen.c: Likewise. * tree-ssa-structalias.c: Likewise. * tree-ssa-tail-merge.c: Likewise. * tree-ssa-ter.c: Likewise. * tree-ssa-threadedge.c: Likewise. * tree-ssa-threadupdate.c: Likewise. * tree-ssa-uncprop.c: Likewise. * tree-ssa-uninit.c: Likewise. * tree-ssa.c: Likewise. * tree-ssanames.c: Likewise. * tree-stdarg.c: Likewise. * tree-streamer-in.c: Likewise. * tree-streamer-out.c: Likewise. * tree-streamer.c: Likewise. * tree-switch-conversion.c: Likewise. * tree-tailcall.c: Likewise. * tree-vect-data-refs.c: Likewise. * tree-vect-generic.c: Likewise. * tree-vect-loop-manip.c: Likewise. * tree-vect-loop.c: Likewise. * tree-vect-patterns.c: Likewise. * tree-vect-slp.c: Likewise. * tree-vect-stmts.c: Likewise. * tree-vectorizer.c: Likewise. * tree-vrp.c: Likewise. * tree.c: Likewise. * tsan.c: Likewise. * ubsan.c: Likewise. * value-prof.c: Likewise. * var-tracking.c: Likewise. * varasm.c: Likewise. * varpool.c: Likewise. * vtable-verify.c: Likewise. * web.c: Likewise. * wide-int-print.cc: Likewise. * wide-int.cc: Likewise. * xcoffout.c: Likewise. From-SVN: r229526
2015-10-14tree-vectorizer.h (vect_is_simple_use): Remove unused parameters.Richard Biener1-18/+12
2015-10-14 Richard Biener <rguenther@suse.de> * tree-vectorizer.h (vect_is_simple_use): Remove unused parameters. (vect_is_simple_use_1): Likewise. Make overload of vect_is_simple_use. (vect_get_vec_def_for_operand): Remove unused parameter. * tree-vect-loop.c (get_initial_def_for_induction): Adjust. (vect_create_epilog_for_reduction): Likewise. (vectorizable_reduction): Likewise. (vectorizable_live_operation): Likewise. * tree-vect-patterns.c (type_conversion_p): Likewise. (vect_recog_vector_vector_shift_pattern): Likewise. (check_bool_pattern): Likewise. * tree-vect-slp.c (vect_get_and_check_slp_defs): Likewise. (vect_analyze_slp_cost_1): Likewise. * tree-vect-stmts.c (process_use): Likewise. (vect_get_vec_def_for_operand): Do not handle reductions. (vect_get_vec_defs): Adjust. (vectorizable_mask_load_store): Likewise. (vectorizable_call): Likewise. (vectorizable_simd_clone_call): Likewise. (vect_get_loop_based_defs): Likewise. (vectorizable_conversion): Likewise. (vectorizable_assignment): Likewise. (vectorizable_shift): Likewise. (vectorizable_operation): Likewise. (vectorizable_store): Likewise. (vectorizable_load): Likewise. (vect_is_simple_cond): Likewise. (vectorizable_condition): Likewise. (vect_is_simple_use): Remove unused parameters. (vect_is_simple_use_1): Adjust and rename. From-SVN: r228811
2015-10-14tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Reset info at start.Richard Biener1-0/+17
2015-10-14 Richard Biener <rguenther@suse.de> * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Reset info at start. (vect_analyze_group_access_1): Add debug print. * tree-vect-loop.c (vect_get_single_scalar_iteration_cost): Rename ... (vect_compute_single_scalar_iteration_cost): ... to this. (vect_analyze_loop_2): Adjust. * tree-vect-slp.c (struct _slp_oprnd_info): Move from ... * tree-vectorizer.h: ... here. (add_stmt_info_to_vec): Remove. * tree-vect-stmts.c (record_stmt_cost): Inline add_stmt_info_to_vec. From-SVN: r228806
2015-10-13tree-vect-data-refs.c (vect_analyze_data_ref_dependences): Allocate the data ↵Richard Biener1-0/+4
dependence vector. 2015-10-13 Richard Biener <rguenther@suse.de> * tree-vect-data-refs.c (vect_analyze_data_ref_dependences): Allocate the data dependence vector. (vect_peeling_hash_insert): Get the peeling hash table as argument. (vect_peeling_hash_get_lowest_cost): Likewise. (vect_enhance_data_refs_alignment): Adjust. (struct _vect_peel_info, struct _vect_peel_extended_info, struct peel_info_hasher): Move from ... * tree-vectorizer.h: ... here. (LOOP_VINFO_COST_MODEL_MIN_ITERS): Remove. (LOOP_VINFO_PEELING_HTAB): Likewise. (struct _loop_vec_info): Remove min_profitable_iters and peeling_htab members. * tree-vect-loop.c (new_loop_vec_info): Do not allocate vectors here. (destroy_loop_vec_info): Adjust. (vect_analyze_loop_2): Do not set LOOP_VINFO_COST_MODEL_MIN_ITERS. (vect_estimate_min_profitable_iters): Use LOOP_VINFO_COMP_ALIAS_DDRS to estimate alias versioning cost. * tree-vect-slp.c (vect_analyze_slp_cost): Dump header. From-SVN: r228751
2015-10-06tree-vectorizer.h (vec_info): New base class for...Richard Biener1-89/+69
2015-10-06 Richard Biener <rguenther@suse.de> * tree-vectorizer.h (vec_info): New base class for... (_loop_vec_info): ... this and ... (_bb_vec_info): ... this. (vect_is_simple_use, vect_is_simple_use_1, new_stmt_vec_info, vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment, vect_analyze_data_ref_accesses, vect_analyze_data_refs, vect_schedule_slp, vect_analyze_slp, vect_pattern_recog, vect_destroy_datarefs): Adjust interface to take a vec_info * rather than both a loop_vec_info and a bb_vec_info argument. * tree-vect-data-refs.c (vect_compute_data_refs_alignment, vect_verify_datarefs_alignment, vect_enhance_data_refs_alignment, vect_analyze_data_refs_alignment, vect_analyze_data_ref_accesses, vect_analyze_data_refs, vect_create_data_ref_ptr): Adjust accordingly. * tree-vect-loop.c (new_loop_vec_info): Initialize base class. (destroy_loop_vec_info, vect_analyze_loop_2, vect_is_simple_reduction_1, get_initial_def_for_induction, vect_create_epilog_for_reduction, vectorizable_reduction, vectorizable_live_operation, vect_transform_loop): Adjust. * tree-vect-patterns.c (type_conversion_p, vect_recog_widen_mult_pattern, vect_recog_widen_shift_pattern, vect_recog_rotate_pattern, vect_recog_vector_vector_shift_pattern, vect_recog_divmod_pattern, vect_recog_mixed_size_cond_pattern, check_bool_pattern, vect_recog_bool_pattern, vect_mark_pattern_stmts, vect_pattern_recog): Likewise. * tree-vect-slp.c (vect_get_and_check_slp_defs, vect_build_slp_tree_1, vect_build_slp_tree, vect_analyze_slp_cost_1, vect_analyze_slp_instance, vect_analyze_slp, destroy_bb_vec_info, vect_slp_analyze_bb_1, vect_schedule_slp): Likewise. (new_bb_vec_info): Initialize base classs. * tree-vect-stmts.c (record_stmt_cost, process_use, vect_get_vec_def_for_operand, vect_finish_stmt_generation, vectorizable_mask_load_store, vectorizable_call, vectorizable_simd_clone_call, vectorizable_conversion, vectorizable_assignment, vectorizable_shift, vectorizable_operation, vectorizable_store, vectorizable_load, vect_is_simple_cond, vectorizable_condition, new_stmt_vec_info, vect_is_simple_use, vect_is_simple_use_1): Likewise. * tree-vectorizer.c (vect_destroy_datarefs): Likewise. From-SVN: r228514