Richard Biener <rguent...@suse.de> writes: > * 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.
This breaks libgfortran on ia64: ../../../libgfortran/generated/matmul_c4.c: In function 'matmul_c4': ../../../libgfortran/generated/matmul_c4.c:79:1: internal compiler error: in vectorizable_store, at tree-vect-stmts.c:5651 matmul_c4 (gfc_array_c4 * const restrict retarray, ^ 0x40000000010ff01f vectorizable_store ../../gcc/tree-vect-stmts.c:5651 0x4000000001115b5f vect_transform_stmt(gimple*, gimple_stmt_iterator*, bool*, _slp_tree*, _slp_instance*) ../../gcc/tree-vect-stmts.c:8003 0x400000000114df1f vect_schedule_slp_instance ../../gcc/tree-vect-slp.c:3484 0x4000000001154d6f vect_schedule_slp(vec_info*) ../../gcc/tree-vect-slp.c:3549 0x40000000011562bf vect_slp_bb(basic_block_def*) ../../gcc/tree-vect-slp.c:2543 0x4000000001159f2f execute ../../gcc/tree-vectorizer.c:734 Andreas. -- Andreas Schwab, SUSE Labs, sch...@suse.de GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7 "And now for something completely different."