aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-transform.c
AgeCommit message (Collapse)AuthorFilesLines
2008-11-28re PR tree-optimization/37955 (internal compiler error: in ↵Richard Guenther1-10/+0
vectorizable_store, at tree-vect-transform.c:5447) 2008-11-28 Richard Guenther <rguenther@suse.de> PR tree-optimization/37955 PR tree-optimization/37742 * tree-vect-transform.c (vectorizable_store): Remove assert for compatible aliases. (vectorizable_load): Likewise. * gcc.c-torture/compile/pr37955.c: New testcase. * gcc.c-torture/compile/pr37742-3.c: Likewise. From-SVN: r142257
2008-09-30re PR middle-end/37491 (Revision 140257 causes vectorizer tests failures)Richard Guenther1-24/+24
2008-09-30 Richard Guenther <rguenther@suse.de> PR middle-end/37491 * tree-vect-transform.c (vect_create_data_ref_ptr): Properly build restrict-qualified pointers. (vectorizable_store): Move alias check later. (vectorizable_load): Likewise. From-SVN: r140781
2008-09-26re PR tree-optimization/37574 (ICE with the vectorizer and GC)Dorit Nuzman1-33/+44
PR tree-optimization/37574 * tree-vectorizer.c (vect_is_simple_use): Fix indentation. * tree-vect-transform.c (vect_get_constant_vectors): Use vectype instead of vector_type for constants. Take computation out of loop. (vect_get_vec_def_for_operand): Use only vectype for constant case, and use only vector_type for invariant case. (get_initial_def_for_reduction): Use vectype instead of vector_type. From-SVN: r140685
2008-09-22re PR tree-optimization/37482 (definition in block 51 follows the use for ↵Ira Rosen1-9/+12
SSA_NAME with -maltivec) PR tree-optimization/37482 * tree-vectorizer.h (struct _slp_instance): Add new field. (SLP_INSTANCE_FIRST_LOAD_STMT): New. (get_earlier_stmt): New function. * tree-vect-analyze.c (vect_find_first_load_in_slp_instance): New function. (vect_analyze_slp_instance): Set SLP_INSTANCE_FIRST_LOAD_STMT. * tree-vect-transform.c (vect_finish_stmt_generation): Remove the asserts that GSI points to the scalar statement being vectorized. Set new statement location according to GSI. (vect_schedule_slp_instance): Use GSI of SLP_INSTANCE_FIRST_LOAD_STMT when vectorizing loads. From-SVN: r140544
2008-09-21re PR tree-optimization/37539 (Hang for -O3)Ira Rosen1-10/+17
PR tree-optimization/37539 * tree-vect-transform.c (vect_transform_strided_load): Save vector statement in related statement field only for the first load of the group of loads with the same data reference. From-SVN: r140522
2008-09-17re PR middle-end/37385 (ICE in set_mem_alias_set with the vectorizer and ↵Richard Guenther1-16/+27
function pointers) 2008-09-17 Richard Guenther <rguenther@suse.de> PR middle-end/37385 PR tree-optimization/37491 * alias.c (get_alias_set): Use the canonical type. * tree-vect-transform.c (vectorizable_store): Use the type of the lhs for the vector type. Adjust checking. (vectorizable_load): Adjust checking. From-SVN: r140412
2008-09-11tree-vectorizer.c (slpeel_add_loop_guard): Fix types.Richard Guenther1-7/+11
2008-09-11 Richard Guenther <rguenther@suse.de> * tree-vectorizer.c (slpeel_add_loop_guard): Fix types. (set_prologue_iterations): Likewise. * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): Likewise. (vect_update_init_of_dr): Likewise. * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Fix type verification. * fold-const.c (fold_unary): Do not generate calculations in sub-types. From-SVN: r140291
2008-09-11tree-vect-transform.c (vectorizable_store): Use the rhs vector type for ↵Ira Rosen1-0/+3
alias check. * tree-vect-transform.c (vectorizable_store): Use the rhs vector type for alias check. From-SVN: r140257
2008-09-10re PR middle-end/37385 (ICE in set_mem_alias_set with the vectorizer and ↵Ira Rosen1-6/+10
function pointers) PR tree-optimization/37385 * tree-vect-transform.c (vect_create_data_ref_ptr): Add a new argument, and use it as a vector type if not NULL. (vectorizable_store): Call vect_create_data_ref_ptr with the type of vectorized rhs. (vect_setup_realignment): Call vect_create_data_ref_ptr with additional argument. (vectorizable_load): Likewise. From-SVN: r140195
2008-09-07re PR tree-optimization/36630 (ICE in vect_update_ivs_after_vectorizer)Richard Guenther1-0/+1
PR tree-optimization/36630 * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Call STRIP_NOPS before calling evolution_part_in_loop_num. Co-Authored-By: Ira Rosen <irar@il.ibm.com> From-SVN: r140085
2008-08-28target.h (struct vectorize): Add new target builtin.Ira Rosen1-28/+377
* target.h (struct vectorize): Add new target builtin. * tree-vectorizer.c (destroy_loop_vec_info): Call vect_free_slp_instance instead of vect_free_slp_node. * tree-vectorizer.h (enum slp_load_perm_type): New. (struct _slp_instance): Add new fields. (SLP_INSTANCE_LOAD_PERMUTATION): New. (SLP_INSTANCE_LOADS): New. (vect_free_slp_tree): Remove. (vect_free_slp_instance): Declare. (SLP_TREE_LOADS_PERM_TYPE, TARG_VEC_PERMUTE_COST): New. (vectorizable_load): Add argument. (vect_transform_slp_perm_load): New. * tree-vect-analyze.c (vect_analyze_operations): Add an argument to vectorizable_load. (vect_get_place_in_interleaving_chain): New function. (vect_free_slp_tree): Make static. (vect_free_slp_instance): New function. (vect_build_slp_tree): Add new arguments. Allow load permutations and collect the load location in the interleaving chain. (vect_supported_slp_permutation_p): New function. (vect_supported_load_permutation_p): Likewise. (vect_analyze_slp_instance): In case of loads permutation, call vect_supported_load_permutation_p to check that the permutation is supported. * target-def.h (TARGET_VECTORIZE_BUILTIN_VEC_PERM): New. * tree-vect-transform.c (vect_transform_stmt): Add new argument. (vect_create_mask_and_perm): New function. (vect_get_mask_element, vect_transform_slp_perm_load): Likewise. (vectorizable_load): Add an argument. Don't keep the created vectors statements in the node if permutation is required. Call vect_transform_slp_perm_load to generate the permutation. (vect_transform_stmt): Add new argument. Call vectorizable_load with additional argument. (vect_schedule_slp_instance): In case of loads permutation, allocate vectorized statements structure for all the related SLP nodes. Call vect_transform_stmt with addditional argument. (vect_transform_loop): Call vect_transform_stmt with correct arguments. * config/spu/spu.c (spu_builtin_vec_perm): New. (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine. * config/spu/spu.h (TARG_VEC_PERMUTE_COS): Define. * config/rs6000/rs6000.c (rs6000_builtin_vec_perm): New. (TARGET_VECTORIZE_BUILTIN_VEC_PERM): Redefine. From-SVN: r139706
2008-08-23re PR middle-end/37161 (Revision 139225 caused gfortran.dg/vect/pr33301.f -O)Ira Rosen1-7/+19
PR tree-optimization/37161 * tree-vectorizer.h (vect_get_smallest_scalar_type): Declare. * tree-vect-analyze.c (vect_get_smallest_scalar_type): New function. (vect_determine_vectorization_factor): Move the scalar type retrieval to vect_get_smallest_scalar_type. (vect_build_slp_tree): Call vect_get_smallest_scalar_type to get scalar type. Remove redundant computation. * tree-vect-transform.c (vect_get_constant_vectors): Add argument. (vect_get_slp_defs): Take the type of RHS into account if necessary by calling vect_get_smallest_scalar_type. Call vect_get_constant_vectors with additional argument. From-SVN: r139518
2008-08-22re PR middle-end/37078 (ICE in set_value_range, at tree-vrp.c:401 when ↵Richard Guenther1-1/+2
compiling gmp 4.2.3) 2008-08-22 Richard Guenther <rguenther@suse.de> PR tree-optimization/37078 * tree-vrp.c (extract_range_from_unary_expr): Avoid generating [+INF, +INF] ranges. * gcc.c-torture/compile/pr37078.c: New testcase. From-SVN: r139501
2008-08-19tree-vectorizer.c (supportable_widening_operation): Support multi-step ↵Ira Rosen1-234/+429
conversion... * tree-vectorizer.c (supportable_widening_operation): Support multi-step conversion, return the number of steps in such conversion and the required intermediate types. (supportable_narrowing_operation): Likewise. * tree-vectorizer.h (vect_pow2): New function. (supportable_widening_operation): Change argument types. (supportable_narrowing_operation): Likewise. (vectorizable_type_promotion): Add an argument. (vectorizable_type_demotion): Likewise. * tree-vect-analyze.c (vect_analyze_operations): Call vectorizable_type_promotion and vectorizable_type_demotion with additional argument. (vect_get_and_check_slp_defs): Detect patterns. (vect_build_slp_tree): Add an argument, don't fail in case of multiple types. (vect_analyze_slp_instance): Don't fail in case of multiple types. Call vect_build_slp_tree with correct arguments. Calculate unrolling factor according to the smallest type in the loop. (vect_detect_hybrid_slp_stmts): Include statements from patterns. * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Call supportable_widening_operation with correct arguments. * tree-vect-transform.c (vect_get_slp_defs): Allocate output vector operands lists according to the number of vector statements in left or right node, if exists. (vect_gen_widened_results_half): Remove unused argument. (vectorizable_conversion): Call supportable_widening_operation, supportable_narrowing_operation, and vect_gen_widened_results_half with correct arguments. (vectorizable_assignment): Change documentation, support multiple types in SLP. (vectorizable_operation): Likewise. (vect_get_loop_based_defs): New function. (vect_create_vectorized_demotion_stmts): Likewise. (vectorizable_type_demotion): Support loop-aware SLP and general multi-step conversion. Call vect_get_loop_based_defs and vect_create_vectorized_demotion_stmts for transformation. (vect_create_vectorized_promotion_stmts): New function. (vectorizable_type_promotion): Support loop-aware SLP and general multi-step conversion. Call vect_create_vectorized_promotion_stmts for transformation. (vectorizable_store): Change documentation, support multiple types in SLP. (vectorizable_load): Likewise. (vect_transform_stmt): Pass SLP_NODE to vectorizable_type_promotion and vectorizable_type_demotion. (vect_schedule_slp_instance): Move here the calculation of number of vectorized statements for each node from... (vect_schedule_slp): ... here. (vect_transform_loop): Call vect_schedule_slp without the last argument. From-SVN: r139225
2008-08-19re PR bootstrap/37152 (tree-vect-transform.c: use of "=" where "==" may have ↵Dorit Nuzman1-2/+2
been intended) PR bootstrap/37152 * tree-vect-transform.c (vect_create_epilog_for_reduction): Change = to == in assert statement. (vectorizable_reduction): Fix typo. From-SVN: r139224
2008-08-18tree.h (IS_CONVERT_EXPR_CODE_P): Renamed toTomas Bily1-4/+4
* tree.h (IS_CONVERT_EXPR_CODE_P): Renamed to * CONVERT_EXPR_CODE_P. * tree-ssa-threadedge.c (simplify_control_stmt_condition): Use CONVERT_EXPR_P. * tree-data-ref.c (split_constant_offset_1): Likewise. * tree-inline.c (estimate_operator_cost): Use CASE_CONVERT. * tree-sra.c (sra_walk_expr): Likewise. * matrix-reorg.c (ssa_accessed_in_assign_rhs): Likewise. * tree-ssa-loop-niter.c (expand_simple_operations): Likewise. * gimple.h (gimple_assign_cast_p): Use CONVERT_EXPR_CODE_P. * tree-ssa-structalias.c (find_func_aliases, find_func_aliases): * Likewise. * gimple.c (gimple_assign_unary_nop_p): Likewise. * tree-vect-transform.c (vectorizable_type_demotion) (vectorizable_type_promotion): Likewise. * tree-inline.c (expand_call_inline): * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from) (forward_propagate_addr_expr_1, forward_propagate_comparison) (tree_ssa_forward_propagate_single_use_vars): Likewise. * expr.c (expand_expr_real_1): Likewise. * tree-ssa-dom.c (hashable_expr_equal_p, * iterative_hash_hashable_expr) (gimple_assign_unary_useless_conversion_p): Likewise. * tree-stdarg.c (execute_optimize_stdarg): Likewise. * tree-ssa-ccp.c (ccp_fold, fold_gimple_assign): Likewise. * fold-const.c (fold_unary): Likewise. * tree.h (CONVERT_EXPR_P): Likewise. * tree.c (simple_cst_equal, iterative_hash_expr): Likewise. * tree-ssa-loop-im.c (rewrite_bittest): Likewise. * tree-vrp.c: (register_edge_assert_for_2, extract_range_from_unary_expr) (register_edge_assert_for_1): Likewise. * cp/tree.c (cp_tree_equal): Likewise. From-SVN: r139204
2008-08-14tree-vect-transform.c (vect_create_epilog_for_reduction): Takes an ↵Dorit Nuzman1-93/+129
additional argument. 2008-08-14 Dorit Nuzman <dorit@il.ibm.com> * tree-vect-transform.c (vect_create_epilog_for_reduction): Takes an additional argument. Support reduction when duplication is needed due to data-types of different sizes in the loop. (get_initial_def_for_induction): Fix printout. (vect_get_vec_def_for_stmt_copy): Support case where the vec_stmt_for_operand is a phi node. (vectorizable_reduction): Support reduction when duplication is needed due to data-types of different sizes in the loop. (vectorizable_call): Remove restriction to not vectorize in case we have data-types of different sizes in the loop. (vectorizable_conversion): Likewise. (vectorizable_operation): Likewise. (vectorizable_type_demotion): Likewise. (vectorizable_type_promotion): Likewise. (vectorizable_induction): Add restriction to not vectorize in case we have data-types of different sizes in the loop. From-SVN: r139096
2008-08-12tree-vectorizer.c: Depend on langhooks.h.Ira Rosen1-26/+146
* tree-vectorizer.c: Depend on langhooks.h. (supportable_widening_operation): Add two arguments. Support double type conversions. (supportable_narrowing_operation): Likewise. * tree-vectorizer.h (supportable_widening_operation): Add two arguments. (supportable_narrowing_operation): Likewise. * tree-vect-patterns.c (vect_recog_widen_mult_pattern) : Call supportable_widening_operation with correct arguments. * tree-vect-transform.c (vectorizable_conversion): Likewise. (vectorizable_type_demotion): Support double type conversions. (vectorizable_type_promotion): Likewise. * Makefile.in (tree-vectorizer.o): Depend on langhooks.h. From-SVN: r138988
2008-08-08tree-vect-transform.c (vectorizable_conversion): Pass the integral type to ↵Dorit Nuzman1-3/+6
vectorize.builtin_conversion. 2008-08-08 Dorit Nuzman <dorit@il.ibm.com> * tree-vect-transform.c (vectorizable_conversion): Pass the integral type to vectorize.builtin_conversion. (vectorizable_conversion): Likewise. * config/i386/i386.c (ix86_vectorize_builtin_conversion): Always takes integral type as input. * config/rs6000/rs6000.c (rs6000_builtin_conversion): Add case for FIX_TRUNC_EXPR. (rs6000_expand_builtin): Add case for ALTIVEC_BUILTIN_VCTUXS and ALTIVEC_BUILTIN_VCTSXS. (rs6000_builtin_mul_widen_even. rs6000_builtin_mul_widen_odd): Fix formatting. From-SVN: r138885
2008-08-06tree-vect-transform.c (vect_model_simple_cost): Return immediately if stmt ↵Victor Kaplansky1-3/+14
is pure SLP. 2008-08-06 Victor Kaplansky <victork@il.ibm.com> Ira Rosen <irar@il.ibm.com> * tree-vect-transform.c (vect_model_simple_cost): Return immediately if stmt is pure SLP. (vect_model_store_cost): Ditto. (vect_model_load_cost): Ditto. (vectorizable_store): Remove PURE_SLP check before call to vect_model_store_cost. (vect_model_store_cost): When checking whether stmt describe strided access, add a check that it is not slp_node. Testsute * gcc.dg/vect/costmodel/ppc/costmodel-slp-34.c: New test. Co-Authored-By: Ira Rosen <irar@il.ibm.com> From-SVN: r138815
2008-08-04tree-vect-transform.c (vectorizable_call): Fix tuplification.Richard Guenther1-11/+7
2008-08-04 Richard Guenther <rguenther@suse.de> * tree-vect-transform.c (vectorizable_call): Fix tuplification. From-SVN: r138642
2008-07-28backport: ChangeLog.tuples: ChangeLog from gimple-tuples-branch.Richard Biener1-655/+742
2008-07-28 Richard Guenther <rguenther@suse.de> Merge from gimple-tuples-branch. * ChangeLog.tuples: ChangeLog from gimple-tuples-branch. * gimple.def: New file. * gsstruct.def: Likewise. * gimple-iterator.c: Likewise. * gimple-pretty-print.c: Likewise. * tree-gimple.c: Removed. Merged into ... * gimple.c: ... here. New file. * tree-gimple.h: Removed. Merged into ... * gimple.h: ... here. New file. * Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h. * configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the --enable-checking=gimple flag. * config.in: Likewise. * configure: Regenerated. * tree-ssa-operands.h: Tuplified. * tree-vrp.c: Likewise. * tree-loop-linear.c: Likewise. * tree-into-ssa.c: Likewise. * tree-ssa-loop-im.c: Likewise. * tree-dump.c: Likewise. * tree-complex.c: Likewise. * cgraphbuild.c: Likewise. * tree-ssa-threadupdate.c: Likewise. * tree-ssa-loop-niter.c: Likewise. * tree-pretty-print.c: Likewise. * tracer.c: Likewise. * gengtype.c: Likewise. * tree-loop-distribution.c: Likewise. * tree-ssa-loop-unswitch.c: Likewise. * cgraph.c: Likewise. * cgraph.h: Likewise. * tree-ssa-loop-manip.c: Likewise. * value-prof.c: Likewise. * tree-ssa-loop-ch.c: Likewise. * tree-tailcall.c: Likewise. * value-prof.h: Likewise. * tree.c: Likewise. * tree.h: Likewise. * tree-pass.h: Likewise. * ipa-cp.c: Likewise. * tree-scalar-evolution.c: Likewise. * tree-scalar-evolution.h: Likewise. * target.h: Likewise. * lambda-mat.c: Likewise. * tree-phinodes.c: Likewise. * diagnostic.h: Likewise. * builtins.c: Likewise. * tree-ssa-alias-warnings.c: Likewise. * cfghooks.c: Likewise. * fold-const.c: Likewise. * cfghooks.h: Likewise. * omp-low.c: Likewise. * tree-ssa-dse.c: Likewise. * ipa-reference.c: Likewise. * tree-ssa-uncprop.c: Likewise. * toplev.c: Likewise. * tree-gimple.c: Likewise. * tree-gimple.h: Likewise. * tree-chrec.c: Likewise. * tree-chrec.h: Likewise. * tree-ssa-sccvn.c: Likewise. * tree-ssa-sccvn.h: Likewise. * cgraphunit.c: Likewise. * tree-ssa-copyrename.c: Likewise. * tree-ssa-ccp.c: Likewise. * tree-ssa-loop-ivopts.c: Likewise. * tree-nomudflap.c: Likewise. * tree-call-cdce.c: Likewise. * ipa-pure-const.c: Likewise. * c-format.c: Likewise. * tree-stdarg.c: Likewise. * tree-ssa-math-opts.c: Likewise. * tree-ssa-dom.c: Likewise. * tree-nrv.c: Likewise. * tree-ssa-propagate.c: Likewise. * ipa-utils.c: Likewise. * tree-ssa-propagate.h: Likewise. * tree-ssa-alias.c: Likewise. * gimple-low.c: Likewise. * tree-ssa-sink.c: Likewise. * ipa-inline.c: Likewise. * c-semantics.c: Likewise. * dwarf2out.c: Likewise. * expr.c: Likewise. * tree-ssa-loop-ivcanon.c: Likewise. * predict.c: Likewise. * tree-ssa-loop.c: Likewise. * tree-parloops.c: Likewise. * tree-ssa-address.c: Likewise. * tree-ssa-ifcombine.c: Likewise. * matrix-reorg.c: Likewise. * c-decl.c: Likewise. * tree-eh.c: Likewise. * c-pretty-print.c: Likewise. * lambda-trans.c: Likewise. * function.c: Likewise. * langhooks.c: Likewise. * ebitmap.h: Likewise. * tree-vectorizer.c: Likewise. * function.h: Likewise. * langhooks.h: Likewise. * tree-vectorizer.h: Likewise. * ipa-type-escape.c: Likewise. * ipa-type-escape.h: Likewise. * domwalk.c: Likewise. * tree-if-conv.c: Likewise. * profile.c: Likewise. * domwalk.h: Likewise. * tree-data-ref.c: Likewise. * tree-data-ref.h: Likewise. * tree-flow-inline.h: Likewise. * tree-affine.c: Likewise. * tree-vect-analyze.c: Likewise. * c-typeck.c: Likewise. * gimplify.c: Likewise. * coretypes.h: Likewise. * tree-ssa-phiopt.c: Likewise. * calls.c: Likewise. * tree-ssa-coalesce.c: Likewise. * tree.def: Likewise. * tree-dfa.c: Likewise. * except.c: Likewise. * except.h: Likewise. * cfgexpand.c: Likewise. * tree-cfgcleanup.c: Likewise. * tree-ssa-pre.c: Likewise. * tree-ssa-live.c: Likewise. * tree-sra.c: Likewise. * tree-ssa-live.h: Likewise. * tree-predcom.c: Likewise. * lambda.h: Likewise. * tree-mudflap.c: Likewise. * ipa-prop.c: Likewise. * print-tree.c: Likewise. * tree-ssa-copy.c: Likewise. * ipa-prop.h: Likewise. * tree-ssa-forwprop.c: Likewise. * ggc-page.c: Likewise. * c-omp.c: Likewise. * tree-ssa-dce.c: Likewise. * tree-vect-patterns.c: Likewise. * tree-ssa-ter.c: Likewise. * tree-nested.c: Likewise. * tree-ssa.c: Likewise. * lambda-code.c: Likewise. * tree-ssa-loop-prefetch.c: Likewise. * tree-inline.c: Likewise. * tree-inline.h: Likewise. * tree-iterator.c: Likewise. * tree-optimize.c: Likewise. * tree-ssa-phiprop.c: Likewise. * tree-vect-transform.c: Likewise. * tree-object-size.c: Likewise. * tree-outof-ssa.c: Likewise. * cfgloop.c: Likewise. * system.h: Likewise. * tree-profile.c: Likewise. * cfgloop.h: Likewise. * c-gimplify.c: Likewise. * c-common.c: Likewise. * tree-vect-generic.c: Likewise. * tree-flow.h: Likewise. * c-common.h: Likewise. * basic-block.h: Likewise. * tree-ssa-structalias.c: Likewise. * tree-switch-conversion.c: Likewise. * tree-ssa-structalias.h: Likewise. * tree-cfg.c: Likewise. * passes.c: Likewise. * ipa-struct-reorg.c: Likewise. * ipa-struct-reorg.h: Likewise. * tree-ssa-reassoc.c: Likewise. * cfgrtl.c: Likewise. * varpool.c: Likewise. * stmt.c: Likewise. * tree-ssanames.c: Likewise. * tree-ssa-threadedge.c: Likewise. * langhooks-def.h: Likewise. * tree-ssa-operands.c: Likewise. * config/alpha/alpha.c: Likewise. * config/frv/frv.c: Likewise. * config/s390/s390.c: Likewise. * config/m32c/m32c.c: Likewise. * config/m32c/m32c-protos.h: Likewise. * config/spu/spu.c: Likewise. * config/sparc/sparc.c: Likewise. * config/i386/i386.c: Likewise. * config/sh/sh.c: Likewise. * config/xtensa/xtensa.c: Likewise. * config/stormy16/stormy16.c: Likewise. * config/ia64/ia64.c: Likewise. * config/rs6000/rs6000.c: Likewise. * config/pa/pa.c: Likewise. * config/mips/mips.c: Likewise. From-SVN: r138207
2008-06-30re PR tree-optimization/36648 (segfault in global constructor with -O3)Ira Rosen1-18/+11
PR tree-optimization/36648 * tree-vect-transform.c (vect_do_peeling_for_loop_bound): Divide number of prolog iterations by step. Fix the comment. From-SVN: r137272
2008-06-16re PR tree-optimization/36493 (vectorizer aliasing bug)Ira Rosen1-11/+38
PR tree-optimization/36493 * tree-vect-transform.c (vect_create_data_ref_ptr): Remove TYPE from the arguments list. Use VECTYPE to create vector pointer. (vectorizable_store): Fail if accesses through a pointer to vectype do not alias the original memory reference operands. Call vect_create_data_ref_ptr without the removed argument. (vectorizable_load): Likewise. (vect_setup_realignment): Call vect_create_data_ref_ptr without the removed argument. From-SVN: r136843
2008-06-06cgraph.c: Fix typos in comments.Ralf Wildenhues1-6/+6
gcc/ * cgraph.c: Fix typos in comments. (cgraph_availability_names): Fix string typo. * fold-const.c: Fix typos in comments. (fold_binary): Fix typo in warning. * genautomata.c: Fix typos in comments. (check_presence_pattern_sets): Fix typo in local variable. (output_description): Fix typo in output. * ggc-zone.c (ggc_pch_finish): Fix typo in error message. * hwint.h: Likewise. * matrix-reorg.c (check_allocation_function): Likewise. * omega.c (smooth_weird_equations): Likewise. * auto-inc-dec.c: Fix typos in comments. * bb-reorder.c: Likewise. * builtins.c: Likewise. * c-common.c: Likewise. * c-cppbuiltin.c: Likewise. * c-parser.c: Likewise. * c-pretty-print.c: Likewise. * cfgcleanup.c: Likewise. * cfgexpand.c: Likewise. * cfghooks.c: Likewise. * cfglayout.c: Likewise. * cfgloopmanip.c: Likewise. * cgraphunit.c: Likewise. * coverage.c: Likewise. * dbxout.c: Likewise. * df-byte-scan.c: Likewise. * df-core.c: Likewise. * df-problems.c: Likewise. * df-scan.c: Likewise. * dfp.c: Likewise. * dominance.c: Likewise. * domwalk.c: Likewise. * dse.c: Likewise. * dwarf2out.c: Likewise. * emit-rtl.c: Likewise. * et-forest.c: Likewise. * function.c: Likewise. * function.h: Likewise. * gcc.c: Likewise. * gcov-io.c: Likewise. * gcov.c: Likewise. * gcse.c: Likewise. * genattrtab.c: Likewise. * ggc-page.c: Likewise. * gimplify.c: Likewise. * gthr-lynx.h: Likewise. * haifa-sched.c: Likewise. * ipa-cp.c: Likewise. * ipa-inline.c: Likewise. * ipa-prop.h: Likewise. * ipa-pure-const.c: Likewise. * ipa-struct-reorg.c: Likewise. * ipa-struct-reorg.h: Likewise. * ipa-type-escape.c: Likewise. * ipa.c: Likewise. * loop-doloop.c: Likewise. * mips-tfile.c: Likewise. * mkmap-flat.awk: Likewise. * mkmap-symver.awk: Likewise. * modulo-sched.c: Likewise. * omp-low.c: Likewise. * optabs.c: Likewise. * optabs.h: Likewise. * opts.c: Likewise. * passes.c: Likewise. * postreload-gcse.c: Likewise. * postreload.c: Likewise. * predict.c: Likewise. * pretty-print.h: Likewise. * profile.c: Likewise. * protoize.c: Likewise. * ra-conflict.c: Likewise. * real.c: Likewise. * recog.c: Likewise. * regclass.c: Likewise. * regs.h: Likewise. * reload.c: Likewise. * rtl-error.c: Likewise. * rtlanal.c: Likewise. * scan.h: Likewise. * sched-rgn.c: Likewise. * see.c: Likewise. * stmt.c: Likewise. * target.h: Likewise. * tree-dfa.c: Likewise. * tree-eh.c: Likewise. * tree-flow-inline.h: Likewise. * tree-inline.c: Likewise. * tree-into-ssa.c: Likewise. * tree-loop-distribution.c: Likewise. * tree-nested.c: Likewise. * tree-parloops.c: Likewise. * tree-pass.h: Likewise. * tree-pretty-print.c: Likewise. * tree-profile.c: Likewise. * tree-scalar-evolution.c: Likewise. * tree-sra.c: Likewise. * tree-ssa-alias-warnings.c: Likewise. * tree-ssa-ccp.c: Likewise. * tree-ssa-coalesce.c: Likewise. * tree-ssa-dom.c: Likewise. * tree-ssa-dse.c: Likewise. * tree-ssa-forwprop.c: Likewise. * tree-ssa-live.c: Likewise. * tree-ssa-live.h: Likewise. * tree-ssa-loop-im.c: Likewise. * tree-ssa-loop-ivopts.c: Likewise. * tree-ssa-loop-niter.c: Likewise. * tree-ssa-loop-prefetch.c: Likewise. * tree-ssa-phiopt.c: Likewise. * tree-ssa-phiprop.c: Likewise. * tree-ssa-sccvn.c: Likewise. * tree-ssa-ter.c: Likewise. * tree-ssa-threadupdate.c: Likewise. * tree-ssa.c: Likewise. * tree-vect-analyze.c: Likewise. * tree-vect-transform.c: Likewise. * tree-vectorizer.c: Likewise. * tree-vn.c: Likewise. * tree-vrp.c: Likewise. * tree.c: Likewise. * tree.def: Likewise. * tree.h: Likewise. * unwind-dw2-fde.c: Likewise. * unwind.inc: Likewise. * value-prof.c: Likewise. * vmsdbgout.c: Likewise. From-SVN: r136425
2008-05-22defaults.h (UNITS_PER_SIMD_WORD): Add scalar mode as argument.H.J. Lu1-1/+2
2008-05-22 H.J. Lu <hongjiu.lu@intel.com> * defaults.h (UNITS_PER_SIMD_WORD): Add scalar mode as argument. * doc/tm.texi (UNITS_PER_SIMD_WORD): Likewise. * tree-vect-analyze.c (vect_compute_data_ref_alignment): Replace UNITS_PER_SIMD_WORD with GET_MODE_SIZE (TYPE_MODE (vectype)). (vect_update_misalignment_for_peel): Likewise. (vector_alignment_reachable_p): Likewise. * tree-vect-transform.c (vectorizable_load): Likewise. * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise. * tree-vectorizer.c (get_vectype_for_scalar_type): Pass mode of scalar_type to UNITS_PER_SIMD_WORD. * config/arm/arm.h (UNITS_PER_SIMD_WORD): Updated. * config/i386/i386.h (UNITS_PER_SIMD_WORD): Likewise. * config/mips/mips.h (UNITS_PER_SIMD_WORD): Likewise. * config/rs6000/rs6000.h (UNITS_PER_SIMD_WORD): Likewise. * config/sparc/sparc.h (UNITS_PER_SIMD_WORD): Likewise. From-SVN: r135759
2008-05-22re PR tree-optimization/36293 (ICE or wrong code in vector-strided gap tests)Ira Rosen1-2/+4
PR tree-optimization/36293 * tree-vect-transform.c (vect_transform_strided_load): Don't check if the first load must be skipped because of a gap. From-SVN: r135755
2008-05-14Add SSE5 vector shift/rotate; Update SSE5 vector multiplyMichael Meissner1-35/+62
Co-Authored-By: Dwarakanath Rajagopal <dwarak.rajagopal@amd.com> Co-Authored-By: Paolo Bonzini <bonzini@gnu.org> From-SVN: r135304
2008-05-08tree-data-ref.c (dr_analyze_alias): Do not set DR_SUBVARS.Richard Guenther1-2/+0
2008-05-08 Richard Guenther <rguenther@suse.de> * tree-data-ref.c (dr_analyze_alias): Do not set DR_SUBVARS. * tree-data-ref.h (struct dr_alias): Remove subvars field. (DR_SUBVARS): Remove. * tree-dfa.c (dump_subvars_for): Remove. (debug_subvars_for): Likewise. (dump_variable): Do not dump subvars. (remove_referenced_var): Do not remove subvars. * tree-flow-inline.h (clear_call_clobbered): SFTs no longer exist. (lookup_subvars_for_var): Remove. (get_subvars_for_var): Likewise. (get_subvars_at): Likewise. (get_first_overlapping_subvar): Likewise. (overlap_subvar): Likewise. * tree-flow.h (subvar_t): Remove. (struct var_ann_d): Remove subvars field. * tree-ssa-alias.c (mark_aliases_call_clobbered): Remove queued argument. Remove special handling of SFTs. (compute_tag_properties): Likewise. (set_initial_properties): Likewise. (compute_call_clobbered): Likewise. (count_mem_refs): Likewise. (compute_memory_partitions): Likewise. (compute_flow_insensitive_aliasing): Likewise. (setup_pointers_and_addressables): Likewise. (new_type_alias): Likewise. (struct used_part): Remove. (used_portions): Likewise. (struct used_part_map): Likewise. (used_part_map_eq): Likewise. (used_part_map_hash): Likewise. (free_used_part_map): Likewise. (up_lookup): Likewise. (up_insert): Likewise. (get_or_create_used_part_for): Likewise. (create_sft): Likewise. (create_overlap_variables_for): Likewise. (find_used_portions): Likewise. (create_structure_vars): Likewise. * tree.def (STRUCT_FIELD_TAG): Remove. * tree.h (MTAG_P): Adjust. (struct tree_memory_tag): Remove base_for_components and unpartitionable flags. (struct tree_struct_field_tag): Remove. (SFT_PARENT_VAR): Likewise. (SFT_OFFSET): Likewise. (SFT_SIZE): Likewise. (SFT_NONADDRESSABLE_P): Likewise. (SFT_ALIAS_SET): Likewise. (SFT_UNPARTITIONABLE_P): Likewise. (SFT_BASE_FOR_COMPONENTS_P): Likewise. (union tree_node): Remove sft field. * alias.c (get_alias_set): Remove special handling of SFTs. * print-tree.c (print_node): Remove handling of SFTs. * tree-dump.c (dequeue_and_dump): Likewise. * tree-into-ssa.c (mark_sym_for_renaming): Likewise. * tree-nrv.c (dest_safe_for_nrv_p): Remove special handling of SFTs. * tree-predcom.c (set_alias_info): Do not set subvars. * tree-pretty-print.c (dump_generic_node): Do not handle SFTs. * tree-ssa-loop-ivopts.c (get_ref_tag): Likewise. * tree-ssa-operands.c (access_can_touch_variable): Likewise. (add_vars_for_offset): Remove. (add_virtual_operand): Remove special handling of SFTs. (add_call_clobber_ops): Likewise. (add_call_read_ops): Likewise. (get_asm_expr_operands): Likewise. (get_modify_stmt_operands): Likewise. (get_expr_operands): Likewise. (add_to_addressable_set): Likewise. * tree-ssa.c (verify_ssa_name): Do not handle SFTs. * tree-tailcall.c (suitable_for_tail_opt_p): Likewise. * tree-vect-transform.c (vect_create_data_ref_ptr): Do not set subvars. * tree.c (init_ttree): Remove STRUCT_FIELD_TAG initialization. (tree_code_size): Remove STRUCT_FIELD_TAG handling. (tree_node_structure): Likewise. * tree-ssa-structalias.c (set_uids_in_ptset): Remove special handling of SFTs. (find_what_p_points_to): Likewise. From-SVN: r135077
2008-05-05re PR tree-optimization/36119 (internal compiler error: in ↵Ira Rosen1-0/+5
vectorizable_assignment, at tree-vect-transform.c:3671) PR tree-optimization/36119 * tree-vect-transform.c (vectorizable_assignment): Set NCOPIES to 1 in case of SLP. From-SVN: r134944
2008-04-10re PR tree-optimization/35821 (Internal compiler error: segmentation fault)Ira Rosen1-2/+6
PR tree-optimization/35821 * tree-vect-transform.c (vect_create_data_ref_ptr): Add check that NEW_STMT_LIST is not NULL. From-SVN: r134162
2008-03-12tree-vectorizer.c (free_stmt_vec_info): New function.Victor Kaplansky1-31/+19
2008-03-12 Victor Kaplansky <victork@il.ibm.com> Ira Rosen <irar@il.ibm.com> * tree-vectorizer.c (free_stmt_vec_info): New function. (destroy_loop_vec_info): Move code to free_stmt_vec_info(). Call free_stmt_vec_info(). Free LOOP_VINFO_STRIDED_STORES.. * tree-vectorizer.h (free_stmt_vec_info): Declare. * tree-vect-transform.c (vectorizable_conversion): Free vec_oprnds0 if it was allocated. (vect_permute_store_chain): Remove unused VECs. (vectorizable_store): Free VECs that are allocated in the.. function. (vect_transform_strided_load, vectorizable_load): Likewise. (vect_remove_stores): Simplify the code. (vect_transform_loop): Move code to vect_remove_stores(). Call vect_remove_stores() and free_stmt_vec_info(). Co-Authored-By: Ira Rosen <irar@il.ibm.com> From-SVN: r133134
2008-03-06tree.def (BIT_FIELD_REF): Constrain result type and its precision.Richard Guenther1-5/+0
2008-03-06 Richard Guenther <rguenther@suse.de> * tree.def (BIT_FIELD_REF): Constrain result type and its precision. * tree-cfg.c (verify_expr): Verify BIT_FIELD_REF constraints on result type and precision. * expr.c (get_inner_reference): Set unsignedp based on the result type of BIT_FIELD_REF. * tree.h (BIT_FIELD_REF_UNSIGNED): Remove. * tree-sra.c (instantiate_element): Do not set BIT_FIELD_REF_UNSIGNED. (try_instantiate_multiple_fields): Likewise. Use the correct type for BIT_FIELD_REF. (sra_build_assignment): Likewise. (sra_build_elt_assignment): Likewise. (sra_explode_bitfield_assignment): Likewise. * print-tree.c (print_node): Do not check BIT_FIELD_REF_UNSIGNED. * tree-vect-transform.c (vect_create_epilog_for_reduction): Do not set BIT_FIELD_REF_UNSIGNED. (vectorizable_load): Likewise. From-SVN: r132969
2008-02-26system.h (USE_MAPPED_LOCATION): Poison.Tom Tromey1-5/+1
gcc * system.h (USE_MAPPED_LOCATION): Poison. * Makefile.in (GTFILES): Put CPP_ID_DATA_H first. * tree-cfg.c (make_cond_expr_edges): Remove old location code. (make_goto_expr_edges): Likewise. (remove_bb): Likewise. (execute_warn_function_return): Likewise. * basic-block.h (struct edge_def) <goto_locus>: Change type to location_t. * c-common.c (fname_decl): Remove old location code. * tree-vect-transform.c (vect_finish_stmt_generation): Remove old location code. * rtl.h (ASM_OPERANDS_SOURCE_LOCATION): Remove old-location variant. (ASM_INPUT_SOURCE_LOCATION): Likewise. (gen_rtx_ASM_INPUT): Likewise. (gen_rtx_ASM_INPUT_loc): Likewise. (get_rtx_asm_OPERANDS): Remove. * cfglayout.c (insn_locators_alloc): Remove old location code. (set_curr_insn_source_location): Likewise. (curr_insn_locator): Likewise. * print-tree.c (print_node): Remove old location code. * tree-mudflap.c (mf_varname_tree): Remove old location code. (mf_file_function_line_tree): Remove test of USE_MAPPED_LOCATION. * cfgexpand.c (expand_gimple_cond_expr): Don't use location_from_locus. (construct_exit_block): Remove old location code. * emit-rtl.c (force_next_line_note): Remove old location code. * profile.c (branch_prob): Remove old location code. * tree-vectorizer.h (LOC, UNKNOWN_LOC, EXPR_LOC, LOC_FILE, LOC_LINE): Remove old-location variants. * langhooks.c (lhd_print_error_function): Remove old location code. * configure, config.in: Rebuilt. * configure.ac (--enable-mapped-location): Remove. * c-decl.c (c_init_decl_processing): Remove old location code. (finish_function): Likewise. * recog.c (decode_asm_operands): Remove old location code. * c-pch.c (c_common_read_pch): Remove old location code. * rtl.def (ASM_INPUT, ASM_OPERANDS): Remove old location variants. * gimple-low.c (lower_function_body): Remove old location code. * toplev.c (unknown_location): Remove. (push_srcloc): Remove old-location variant. (process_options): Remove old location code. (lang_dependent_init): Likewise. * input.h (UNKNOWN_LOCATION): Move definition. (location_t): Undeprecate. (source_locus): Remove. (location_from_locus): Remove. (struct location_s): Remove. Remove all old-location code. (input_line, input_filename): Remove. * final.c (final_scan_insn): Remove old location code. * diagnostic.c (diagnostic_build_prefix): Remove USE_MAPPED_LOCATION test. * tree.h (gimple_stmt) <locus>: Now a location_t. (tree_exp) <locus>: Likewise. (DECL_IS_BUILTIN): Remove old-location variant. (annotate_with_file_line, annotate_with_locus): Likewise. (expr_locus, set_expr_locus): Update. * tree.c (build1_stat): Remove old location code. (last_annotated_node): Remove. (annotate_with_file_line): Remove old-location variant. (annotate_with_locus): Likewise. (expr_location): Remove old location code. (set_expr_location): Likewise. (expr_has_location): Likewise. (expr_locus): Likewise. (set_expr_locus): Likewise. (expr_filename): Don't use location_from_locus. (expr_lineno): Likewise. * rtl-error.c (location_for_asm): Remove old location code. * c-lex.c (cb_line_change): Remove old location code. (fe_file_change): Likewise. (cb_def_pragma): Likewise. (c_lex_with_flags): Likewise. * gengtype.c (do_typedef): Don't special-case location types. (define_location_structures): Remove. (main): Don't call define_location_structures. * tree-pretty-print.c (dump_implicit_edges): Remove old location code. gcc/ada * misc.c (internal_error_function): Remove test of USE_MAPPED_LOCATION. * trans.c (gigi): Remove test of USE_MAPPED_LOCATION. (Sloc_to_locus): Remove old location code. gcc/cp * parser.c (eof_token): Remove old location code. (check_empty_body): Remove test of USE_MAPPED_LOCATION. * decl2.c (generate_ctor_or_dtor_function): Remove old location code. (cp_write_global_declarations): Likewise. * lex.c (cxx_init): Remove old location code. (handle_pragma_implementation): Remove test of USE_MAPPED_LOCATION. * pt.c (tsubst): Remove old location code. * error.c (cp_print_error_function): Remove test of USE_MAPPED_LOCATION. * decl.c (pop_label): Remove old location code. (finish_function): Likewise. gcc/fortran * trans-io.c (set_error_locus): Remove old location code. * trans-decl.c (gfc_set_decl_location): Remove old location code. * f95-lang.c (gfc_init): Remove test of USE_MAPPED_LOCATION. * scanner.c (gfc_gobble_whitespace): Remove old location code. (get_file): Likewise. (preprocessor_line): Likewise. (load_file): Likewise. (gfc_new_file): Likewise. * trans.c (gfc_trans_runtime_check): Remove old location code. (gfc_get_backend_locus): Likewise. (gfc_set_backend_locus): Likewise. * data.c (gfc_assign_data_value): Remove old location code. * error.c (show_locus): Remove old location code. * gfortran.h (gfc_linebuf): Remove old location code. (gfc_linebuf_linenum): Remove old-location variant. gcc/java * lang.c (java_post_options): Remove conditional. * expr.c (expand_byte_code): Remove old location code. * jcf-parse.c (set_source_filename): Remove old location code. (give_name_to_class): Likewise. (jcf_parse): Likewise. (duplicate_class_warning): Likewise. (parse_class_file): Likewise. (java_parse_file): Likewise. * decl.c (finish_method): Remove old location code. * class.c (push_class): Remove old location code. gcc/objc * objc-act.c (objc_init): Remove old location code. gcc/treelang * tree1.c (treelang_init): Remove old location code. (treelang_parse_file): Likewise. * lex.l (LINEMAP_POSITION_FOR_COLUMN): Remove. (update_lineno_charno): Remove old location code. From-SVN: r132679
2007-12-27re PR tree-optimization/34591 (internal compiler error: in cost_for_stmt, at ↵Dorit Nuzman1-1/+2
tree-vect-transform.c:98) PR tree-optimization/34591 * tree-vect-trasnform.c (vect_estimate_min_profitable_iters): Skip stmts (including reduction stmts) that are not live. From-SVN: r131206
2007-12-17tree-vectorizer.h (verbosity_levels): Add new verbosity level REPORT_COST.Dorit Nuzman1-25/+21
* tree-vectorizer.h (verbosity_levels): Add new verbosity level REPORT_COST. * tree-vect-transform.c (vect_estimate_min_profitable_iters): Change verbosity level to REPORT_COST. (vect_model_reduction_cost): Likewise. (vect_model_induction_cost): Likewise. (vect_model_simple_cost): likewise. (vect_model_store_cost): likewise. (vect_model_load_cost): likewise. (conservative_cost_threshold): Likewise. Remove print. From-SVN: r131016
2007-12-17re PR tree-optimization/34445 (internal compiler error: in cost_for_stmt, at ↵Dorit Nuzman1-10/+11
tree-vect-transform.c:98) PR tree-optimization/34445 * tree-vect-trasnform.c (vect_estimate_min_profitable_iters): Skip stmts (including live stmts) that are not relevant. From-SVN: r131006
2007-12-16tree-vect-transform.c (conservative_cost_threshold): Add missing space to ↵Uros Bizjak1-1/+1
"not vectorized" message. * tree-vect-transform.c (conservative_cost_threshold): Add missing space to "not vectorized" message. From-SVN: r130989
2007-12-08re PR tree-optimization/34391 (Vectorizer does not fix up alias information ↵Richard Guenther1-0/+1
correctly) 2007-12-08 Richard Guenther <rguenther@suse.de> PR tree-optimization/34391 * tree-vect-transform.c (vect_setup_realignment): Mark new symbols for renaming. From-SVN: r130707
2007-12-06tree-vectorizer.c (slpeel_add_loop_guard): Gimplify the condition.Harsha Jagasia1-61/+197
2007-12-05 Harsha Jagasia <harsha.jagasia@amd.com> * tree-vectorizer.c (slpeel_add_loop_guard): Gimplify the condition. (set_prologue_iterations): New. Set the prologue iterations to total number of scalar iterations if the cost model check indicates that scalar code should be generated. (slpeel_tree_peel_loop_to_edge): Add a new parameter and code for generating the cost condition for epilog. Call set_prologue_iterations to generate cost condition for prolog. (new_loop_vec_info): Initialize LOOP_VINFO_NITERS_UNCHANGED. * tree-vectorizer.h (LOOP_VINFO_NITERS_UNCHANGED): New. (slpeel_tree_peel_loop_to_edge): Update declaration. (set_prologue_iterations): New declaration. * tree-vect-analyze.c (vect_analyze_loop_form): Update LOOP_VINFO_NITERS_UNCHANGED. * tree-vect-transform.c (vect_estimate_min_profitable_iters): Add new parameter and code to check if run time cost model test is needed. Remove code that adds builtin vectorization cost to scalar outside cost for the run time cost model test. If run time cost model test is needed add the appropriate guard cost to the scalar outside cost. The guard cost depends on whether the guard is generated at versioning or at prolog generation or at epilog generation. Change cost model equation to include scalar outside cost. (conservative_cost_threshold): New. Return the less conservative profitability threshold between the cost model threshold and the user defined vectorization threshold. (vect_do_peeling_for_loop_bound): Call conservative_cost_threshold. (vect_do_peeling_for_alignment): Same. (vect_loop_versioning): Same. (vect_create_cond_for_align_checks): ANDs the cost model condition with the alignment condition. (vect_transform_loop): Call loop versioning only when there is a misalignment or an aliasing problem. From-SVN: r130651
2007-11-12re PR tree-optimization/33953 (internal compiler error: vector ↵Ira Rosen1-11/+38
VEC(tree,base) index domain error, in vectorizable_operation at tree-vect-transform.c:4017) PR tree-optimization/33953 * tree-vect-transform.c (vectorizable_operation): In case of SLP, allocate vec_oprnds1 according to the number of created vector statements. In case of shift with scalar argument, store scalar operand for every vector statement to be created for the SLP node. Fix a comment. From-SVN: r130096
2007-11-06re PR tree-optimization/33993 (ICE: verify_stmts failed (invalid reference ↵Jakub Jelinek1-3/+13
prefix)) PR tree-optimization/33993 * tree-vect-transform.c (vect_get_constant_vectors): Use build_vector rather than build_constructor_from_list if all list values are constants. (get_initial_def_for_induction): Use build_vector instead of build_constructor_from_list. * gcc.c-torture/compile/20071105-1.c: New test. From-SVN: r129920
2007-11-04re PR tree-optimization/33987 (internal compiler error: in ↵Dorit Nuzman1-10/+13
get_initial_def_for_reduction, at tree-vect-transform.c:2110 with -O3 -msse2) PR tree-optimization/33987 * tree-vect-transform.c (get_initial_def_for_reduction): Fix assert. Fix indentation. (vectorizable_reduction): Add type check. From-SVN: r129880
2007-10-25re PR tree-optimization/33866 (ICE in vect_get_vec_def_for_stmt_copy, at ↵Ira Rosen1-5/+24
tree-vect-transform.c:1937) PR tree-optimization/33866 * tree-vect-transform.c (vectorizable_store): Check operands of all the stmts in the group of strided accesses. Get def stmt type for each store in the group and pass it to vect_get_vec_def_for_stmt_copy (). From-SVN: r129623
2007-10-24re PR tree-optimization/33804 (ICE in vect_transform_stmt, at ↵Ira Rosen1-4/+7
tree-vect-transform.c:6131 with -ftree-vectorize) PR tree-optimization/33804 * tree-vect-transform.c (vectorizable_operation): Remove the checks that the vectorization is worthwhile from the transformation phase. From-SVN: r129599
2007-10-24tree-vect-analyze.c (vect_build_slp_tree): Return false if vectype cannot be ↵Ira Rosen1-5/+38
determined for the scalar type. * tree-vect-analyze.c (vect_build_slp_tree): Return false if vectype cannot be determined for the scalar type. (vect_analyze_slp_instance): Likewise. * tree-vect-transform.c (vect_model_reduction_cost): Change the return type to bool. Return false if vectype cannot be determined for the scalar type. (vect_get_constant_vectors): Return false if vectype cannot be determined for the scalar type. (get_initial_def_for_induction, vect_get_vec_def_for_operand, get_initial_def_for_reduction, vect_create_epilog_for_reduction, vectorizable_reduction): Likewise. From-SVN: r129598
2007-10-23re PR tree-optimization/33834 (ICE in vect_get_vec_def_for_operand, at ↵Dorit Nuzman1-72/+1
tree-vect-transform.c:1829) PR tree-optimization/33834 PR tree-optimization/33835 * tree-vect-analyze.c (vect_analyze_operations): RELEVANT and LIVE stmts need to be checked for success seperately. * tree-vect-transform.c (vectorizable_call, vectorizable_conversion): Remove the check that stmt is not LIVE. (vectorizable_assignment, vectorizable_induction): Likewise. (vectorizable_operation, vectorizable_type_demotion): Likewise. (vectorizable_type_promotion, vectorizable_load, vectorizable_store): Likewise. (vectorizable_live_operation): Check that op is not NULL. From-SVN: r129571
2007-10-14fixed-bit.c, [...]: Fix comment typos.Kazu Hirata1-1/+1
* config/fixed-bit.c, config/i386/cpuid.h, config/i386/i386.c, config/i386/i386.md, config/i386/sse.md, function.c, jump.c, modulo-sched.c, ra-conflict.c, toplev.c, tree-eh.c, tree-sra.c, tree-ssa-dse.c, tree-vect-analyze.c, tree-vect-patterns.c, tree-vect-transform.c: Fix comment typos. * doc/extend.texi: Fix a typo. From-SVN: r129291
2007-10-12re PR tree-optimization/33742 (Segfault in vectorizable_operation)Uros Bizjak1-0/+6
PR tree-optimization/33742 * tree-vect-transform.c (vectorizable_operation): Return false if get_vectype_for_scalar_type for scalar_dest can't be determined. (vectorizable_call): Same for rhs_type and lhs_type. testsuite/ChangeLog: PR tree-optimization/33742 * gcc.dg/pr33742.c: New testcase. From-SVN: r129255
2007-09-17re PR tree-optimization/33319 (g++.dg/tree-ssa/pr27549.C ICE with vectorization)Victor Kaplansky1-109/+145
PR tree-optimization/33319 * tree-vect-analyze.c (vect_same_range_drs): New. (vect_vfa_range_equal): New. (vect_is_duplicate_ddr): Removed. (vect_mark_for_runtime_alias_test): Do not perform marking when optimizing for size or max_param for alias checking is zero. Move the function before vect_analyze_data_ref_dependence. (vect_analyze_data_ref_dependence): Add call to vect_mark_for_runtime_alias_test in two cases when dependence is not clear. (vect_analyze_data_ref_dependences): Do not call to vect_mark_for_runtime_alias_test. (vect_prune_runtime_alias_test_list): New. (vect_analyze_loop): Add call to vect_prune_runtime_alias_test_list. * tree-vect-transform.c (vect_estimate_min_profitable_iters): Update vec_outside_cost. (vect_vfa_segment_size): More compact code, use TYPE_SIZE_UNIT. (vect_create_cond_for_alias_checks): Build the base address of data reference from DR_GROUP_FIRST_DR. (vect_loop_versioning): New. (vect_transform_loop): Add a call to vect_loop_versioning. Remove factored out code. From-SVN: r128539