diff options
author | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-05-11 12:03:10 +0000 |
---|---|---|
committer | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-05-11 12:03:10 +0000 |
commit | f634c3e9e6fb44109149673db20197d6fad93419 (patch) | |
tree | c7417b74792b46bcd03c94c197dcf0d6da80c8c3 /gcc/tree-data-ref.c | |
parent | 91af12feb74b7ff7e5eac07ac705cc3a797baa09 (diff) | |
download | gcc-f634c3e9e6fb44109149673db20197d6fad93419.tar.gz |
2012-05-11 Richard Guenther <rguenther@suse.de>
PR tree-optimization/53295
* tree-data-ref.h (stride_of_unit_type_p): Handle non-constant
strides.
* tree-data-ref.c (dr_analyze_innermost): Allow non-constant
strides when analyzing data-references in a loop context.
* tree-vect-data-refs.c (vect_mark_for_runtime_alias_test): Reject
non-constant strides for now.
(vect_enhance_data_refs_alignment): Ignore data references
that are strided loads.
(vect_analyze_data_ref_access): Handle non-constant strides.
(vect_check_strided_load): Verify the data-reference is a load.
(vect_analyze_data_refs): Restructure to make strided load
support not dependent on gather support.
* tree-vect-stmts.c (vectorizable_load): Avoid useless work
when doing strided or gather loads.
* tree-vect-loop-manip.c (vect_vfa_segment_size): Use
integer_zerop to compare stride with zero.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@187402 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-data-ref.c')
-rw-r--r-- | gcc/tree-data-ref.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/tree-data-ref.c b/gcc/tree-data-ref.c index 1381b535bd3..90b6f70e4a9 100644 --- a/gcc/tree-data-ref.c +++ b/gcc/tree-data-ref.c @@ -736,7 +736,7 @@ dr_analyze_innermost (struct data_reference *dr, struct loop *nest) if (in_loop) { if (!simple_iv (loop, loop_containing_stmt (stmt), base, &base_iv, - false)) + nest ? true : false)) { if (nest) { @@ -773,7 +773,8 @@ dr_analyze_innermost (struct data_reference *dr, struct loop *nest) offset_iv.step = ssize_int (0); } else if (!simple_iv (loop, loop_containing_stmt (stmt), - poffset, &offset_iv, false)) + poffset, &offset_iv, + nest ? true : false)) { if (nest) { |