This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] More compile-time saving in BB vectorization
- From: Christophe Lyon <christophe dot lyon at linaro dot org>
- To: Andreas Schwab <schwab at suse dot de>
- Cc: Richard Biener <rguenther at suse dot de>, "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>
- Date: Thu, 12 Nov 2015 21:04:00 +0100
- Subject: Re: [PATCH] More compile-time saving in BB vectorization
- Authentication-results: sourceware.org; auth=none
- References: <alpine dot LSU dot 2 dot 11 dot 1511111527570 dot 4884 at t29 dot fhfr dot qr> <mvmziyjw742 dot fsf at hawking dot suse dot de>
On 12 November 2015 at 16:49, Andreas Schwab <schwab@suse.de> wrote:
> Richard Biener <rguenther@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
>
Same problem on armeb.
> Andreas.
>
> --
> Andreas Schwab, SUSE Labs, schwab@suse.de
> GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7
> "And now for something completely different."