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] | |
The dump reports in the vectorizer are prefixed with the line number of
the loop that is being analyzed/transformed. We make a number of
improvements to the way we obtain the loop line number -
1. Get the line-number of the loop exit condition instead of the line
number of the first statement in the loop body.
2. Obtain the line number once instead of each time a printout is
requested.
For example, the -fdump-tree-vect-stats of vect-1.c currently produces:
loop at vect-1.c:53: LOOP VECTORIZED.
loop at vect-1.c:60: LOOP VECTORIZED.
loop at vect-1.c:67: not vectorized: complicated access pattern.
loop at vect-1.c:75: LOOP VECTORIZED.
loop at vect-1.c:86: not vectorized: mixed data-types
loop at vect-1.c:95: not vectorized: possible dependence between data-refs
a[i_283] and a[i_48]
After installing the two parts of this patch it will produce:
loop at vect-1.c:43: not vectorized: bad loop form. nested loop.
loop at vect-1.c:52: LOOP VECTORIZED.
loop at vect-1.c:59: LOOP VECTORIZED.
loop at vect-1.c:66: not vectorized: complicated access pattern.
loop at vect-1.c:74: LOOP VECTORIZED.
loop at vect-1.c:85: not vectorized: mixed data-types
loop at vect-1.c:94: not vectorized: possible dependence between data-refs
a[i_283] and a[i_48]
Which is the correct loop location.
This patch is broken into two parts:
Part 2 (to be sent shortly) has the improvements described above.
Part 1 (included here) prepares the ground for it as described below.
This is a technical patch that replaces the usage of 'struct loop' within
the vectorizer functions with 'struct _loop_vec_info'. By doing this we
enable many functions in the vectorizer to share the information that was
gathered during the vectorization analysis and stored in the loop_vinfo
structure. Obtaining the line number once instead of each time a printout
is requested is a good example for the advantages of this replacement.
This patch consists of:
1. Storing 'loop_vec_info' instead of 'loop' in 'stmt_vec_info'
2. Passing 'loop_vec_info' instead of 'loop' to the vectorizer's
functions.
3. A few unrelated minor cleanups: added missing function declarations,
and avoid 80 column overflow.
Reviewed by Dorit. Bootstrapped and tested on powerpc-suse-linux,
i686-pc-linux-gnu and powerpc-darwin.
ok for mainline?
Thanks,
Leehod
ChangeLog:
* tree-vectorizer.c (vect_analyze_data_ref_dependence): Function
declaration added.
(vect_analyze_data_ref_dependences): Likewise.
(vect_is_simple_use): Argument changed from loop structure to
loop_vect_info structure.
(vect_can_advance_ivs_p): Likewise.
(vect_create_index_for_vector_ref): Likewise.
(vect_update_ivs_after_vectorizer): Likewise.
(new_stmt_vec_info): Likewise.
(new_loop_vec_info): Second argument in call to new_stmt_vec_info
was
changed from loop to loop_vinfo.
(vect_create_data_ref_ptr): First argument in call to
vect_create_index_for_vector_ref was changed from loop to
loop_vinfo.
(vectorizable_assignment): Second argument in call to
vect_is_simple_use
was changed from loop to loop_vinfo.
(vectorizable_operation): Likewise.
(vectorizable_store): Likewise.
(vect_mark_stmts_to_be_vectorized): Likewise.
(vect_do_peeling_for_loop_bound): First argument in call to
vect_update_ivs_after_vectorizer was changed from loop to
loop_vinfo.
(vect_analyze_operations): Argument in call to
vect_can_advance_ivs_p
was changed from loop to loop_vinfo.
(vect_analyze_data_ref_dependences): Third argument in call to
vect_analyze_data_ref_dependence was changed from loop to
loop_vinfo.
(vect_create_index_for_vector_ref): Get the loop from loop_vinfo.
(vect_create_data_ref_ptr): Likewise.
(vect_init_vector): Likewise.
(vect_get_vec_def_for_operand): Likewise.
(vectorizable_assignment): Likewise.
(vectorizable_operation): Likewise.
(vectorizable_store): Likewise.
(vectorizable_load): Likewise.
(vect_update_ivs_after_vectorizer): Likewise.
(vect_is_simple_use): Likewise.
(vect_analyze_data_ref_dependence): Likewise.
(vect_analyze_pointer_ref_access): Likewise.
(vect_can_advance_ivs_p): Likewise.
* tree-vectorizer.h: (_loop_vec_info): Definition and macros moved
before _stmt_vec_info.
(_stmt_vec_info): Loop field replaced by loop_vec_info.
(STMT_VINFO_LOOP): Replaced with STMT_VINFO_LOOP_VINFO.
(new_stmt_vec_info): Argument changed from loop structure to
loop_vect_info structure
(vect_analyze_data_ref_dependences): Unnecessary line was removed.
(vect_analyze_offset_expr): Avoid 80 columns overflow.
(vect_create_addr_base_for_vector_ref): Likewise.
(vect_analyze_pointer_ref_access): Likewise.
Patch:
Attachment:
looplineno.part1
Description: Binary data
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |