This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFC] By default if-convert only basic blocks that will be vectorized (take 2)


failed on 403 of '06:
regclass.c: In function 'init_reg_sets':
regclass.c:277:1: internal compiler error: tree check: expected
ssa_name, have var_decl in copy_ssa_name_fn, at tree-ssanames.c:393
 init_reg_sets ()
 ^
0xb74124 tree_check_failed(tree_node const*, char const*, int, char const*, ...)
        ../../gcc/tree.c:9301
0xb0ade2 tree_check
        ../../gcc/tree.h:2674
0xb0ade2 copy_ssa_name_fn(function*, tree_node*, gimple_statement_d*)
        ../../gcc/tree-ssanames.c:393
0xb0ae6c duplicate_ssa_name_fn(function*, tree_node*, gimple_statement_d*)
        ../../gcc/tree-ssanames.c:452
0x9ce82d duplicate_ssa_name
        ../../gcc/tree-ssanames.h:121
0x9ce82d create_new_def_for(tree_node*, gimple_statement_d*, tree_node**)
        ../../gcc/tree-into-ssa.c:2836
0x986a4e gimple_duplicate_bb
        ../../gcc/tree-cfg.c:5496
0x6425c9 duplicate_block(basic_block_def*, edge_def*, basic_block_def*)
        ../../gcc/cfghooks.c:1040
0x642bfe copy_bbs(basic_block_def**, unsigned int, basic_block_def**,
edge_def**, unsigned int, edge_def**, loop*, basic_block_def*, bool)
        ../../gcc/cfghooks.c:1320
0x649d69 duplicate_loop_to_header_edge(loop*, edge_def*, unsigned int,
simple_bitmap_def*, edge_def*, vec<edge_def*, va_heap, vl_ptr>*, int)
        ../../gcc/cfgloopmanip.c:1314
0xa83d09 gimple_duplicate_loop_to_header_edge(loop*, edge_def*,
unsigned int, simple_bitmap_def*, edge_def*, vec<edge_def*, va_heap,
vl_ptr>*, int)
        ../../gcc/tree-ssa-loop-manip.c:761
0x64b760 loop_version(loop*, void*, basic_block_def**, unsigned int,
unsigned int, unsigned int, bool)
        ../../gcc/cfgloopmanip.c:1706
0x9b71ae version_loop_for_if_conversion
        ../../gcc/tree-if-conv.c:1943
0x9baa3e tree_if_conversion
        ../../gcc/tree-if-conv.c:2069
0x9baa3e main_tree_if_conversion
        ../../gcc/tree-if-conv.c:2089
0x9baa3e execute
        ../../gcc/tree-if-conv.c:2139
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.
specmake: *** [regclass.o] Error 1

On Thu, Oct 17, 2013 at 8:55 PM, Jakub Jelinek <jakub@redhat.com> wrote:
> Hi!
>
> On Tue, Oct 15, 2013 at 02:32:25PM +0200, Jakub Jelinek wrote:
>> Especially on i?86/x86_64 if-conversion pass seems to be often
>> a pessimization, but the vectorization relies on it and without it we can't
>> vectorize a lot of the loops.
>
> Here is an updated patchset:
> - first patch is an updated version of the
>   http://gcc.gnu.org/ml/gcc-patches/2013-10/msg01058.html
>   patch
> - second patch is one variant (easier to write and perhaps maintain,
>   but perhaps with higher compile time and memory requirements) of the
>   follow up to support if-converted inner loop in outer loop vectorization;
>   I have started also working on variant where just the vectorizer
>   groks outer loop with LOOP_VECTORIZED call and two inner loops,
>   but am only about half way through the needed changes and would
>   prefer to wait how these patches actually work out together
> - third patch is an updated version of the
>   http://gcc.gnu.org/ml/gcc-patches/2012-11/msg00202.html patch, this
>   time without if-unconversion pass, but instead performed only in the
>   versioned loops for vectorization purposes
>
> All 3 patches bootstrapped/regtested together on x86_64-linux and
> i686-linux, the first patch and first+second patch additionally tested
> alone with
> make -C gcc -j4 -k check RUNTESTFLAGS=vect.exp
> make -C gcc check-gfortran RUNTESTFLAGS="dg.exp='assumed_rank* pr32533*' execute.exp='forall* intrinsic_mmloc* pr54767.f90'"
> make -C x86*/libgomp check RUNTESTFLAGS=fortran.exp=omp_parse*
> (the latter two are set of tests that failed at some point during
> the development of the patchset).
>
> If anyone has spare cycles to e.g. SPEC2k{,6} test it on his favourite
> platforms (both for resulting code performance and for compile time
> and/or compile memory usage), it would be greatly appreciated.
>
> The only targets with masked load/store support are right now i?86/x86_64
> with -mavx and higher (and for masked gather load support only -mavx2
> and higher), so the last patch will probably be only beneficial to those for
> the time being.
>
>         Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]