This is the mail archive of the 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*, ...)
0xb0ade2 tree_check
0xb0ade2 copy_ssa_name_fn(function*, tree_node*, gimple_statement_d*)
0xb0ae6c duplicate_ssa_name_fn(function*, tree_node*, gimple_statement_d*)
0x9ce82d duplicate_ssa_name
0x9ce82d create_new_def_for(tree_node*, gimple_statement_d*, tree_node**)
0x986a4e gimple_duplicate_bb
0x6425c9 duplicate_block(basic_block_def*, edge_def*, basic_block_def*)
0x642bfe copy_bbs(basic_block_def**, unsigned int, basic_block_def**,
edge_def**, unsigned int, edge_def**, loop*, basic_block_def*, bool)
0x649d69 duplicate_loop_to_header_edge(loop*, edge_def*, unsigned int,
simple_bitmap_def*, edge_def*, vec<edge_def*, va_heap, vl_ptr>*, int)
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)
0x64b760 loop_version(loop*, void*, basic_block_def**, unsigned int,
unsigned int, unsigned int, bool)
0x9b71ae version_loop_for_if_conversion
0x9baa3e tree_if_conversion
0x9baa3e main_tree_if_conversion
0x9baa3e execute
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <> for instructions.
specmake: *** [regclass.o] Error 1

On Thu, Oct 17, 2013 at 8:55 PM, Jakub Jelinek <> 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
>   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
> 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]