On Mon, 16 Nov 2015, Alan Lawrence wrote:

> On 09/11/15 12:55, Richard Biener wrote:
> > 
> > Currently BB vectorization computes all dependences inside a BB
> > region and fails all vectorization if it cannot handle some of them.
> > 
> > This is obviously not needed - BB vectorization can restrict the
> > dependence tests to those that are needed to apply the load/store
> > motion effectively performed by the vectorization (sinking all
> > participating loads/stores to the place of the last one).
> > 
> > With restructuring it that way it's also easy to not give up completely
> > but only for the SLP instance we cannot vectorize (this gives
> > a slight bump in my SPEC CPU 2006 testing to 756 vectorized basic
> > block regions).
> > 
> > But first and foremost this patch is to reduce the dependence analysis
> > cost and somewhat mitigate the compile-time effects of the first patch.
> > 
> > For fixing PR56118 only a cost model issue remains.
> > 
> > Bootstrapped and tested on x86_64-unknown-linux-gnu, applied to trunk.
> > 
> > Richard.
> > 
> > 2015-11-09  Richard Biener  <rguent...@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.
> 
> Since this, I've been seeing an ICE on gfortran.dg/vect/vect-9.f90 at on both
> aarch64-none-linux-gnu and arm-none-linux-gnueabihf:
> 
> spawn /home/alalaw01/build/gcc/testsuite/gfortran4/../../gfortran
> -B/home/alalaw01/build/gcc/testsuite/gfortran4/../../
> -B/home/alalaw01/build/aarch64-unknown-linux-gnu/./libgfortran/
> /home/alalaw01/gcc/gcc/testsuite/gfortran.dg/vect/vect-9.f90
> -fno-diagnostics-show-caret -fdiagnostics-color=never -O -O2 -ftree-vectorize
> -fvect-cost-model=unlimited -fdump-tree-vect-details -Ofast -S -o vect-9.s
> /home/alalaw01/gcc/gcc/testsuite/gfortran.dg/vect/vect-9.f90:5:0: Error:
> definition in block 13 follows the use for SSA_NAME: _339 in statement:
> vectp.156_387 = &*cc_36(D)[_339];
> /home/alalaw01/gcc/gcc/testsuite/gfortran.dg/vect/vect-9.f90:5:0: internal
> compiler error: verify_ssa failed
> 0xcfc61b verify_ssa(bool, bool)
>         ../../gcc-fsf/gcc/tree-ssa.c:1039
> 0xa2fc0b execute_function_todo
>         ../../gcc-fsf/gcc/passes.c:1952
> 0xa30393 do_per_function
>         ../../gcc-fsf/gcc/passes.c:1632
> 0xa3058f execute_todo
>         ../../gcc-fsf/gcc/passes.c:2000
> Please submit a full bug report...
> FAIL: gfortran.dg/vect/vect-9.f90   -O  (internal compiler error)
> FAIL: gfortran.dg/vect/vect-9.f90   -O  (test for excess errors)
> 
> Still there (on aarch64) at r230329.

Please open a bugreport.

Thanks,
Richard.

Reply via email to