diff options
author | Bin Cheng <bin.cheng@arm.com> | 2016-06-17 09:05:05 +0000 |
---|---|---|
committer | Bin Cheng <amker@gcc.gnu.org> | 2016-06-17 09:05:05 +0000 |
commit | 97816be433afedd0a407672b6f2fad23d179447b (patch) | |
tree | 201086e3720f21a3b75bfb89f8db7b84f7824354 /gcc/tree-vect-loop-manip.c | |
parent | 7c80a459b96715dfb44708b7cef9f2813a7ff0ef (diff) | |
download | gcc-97816be433afedd0a407672b6f2fad23d179447b.zip gcc-97816be433afedd0a407672b6f2fad23d179447b.tar.gz gcc-97816be433afedd0a407672b6f2fad23d179447b.tar.bz2 |
tree-vectorizer.h (struct dr_with_seg_len): Remove class member OFFSET.
* tree-vectorizer.h (struct dr_with_seg_len): Remove class
member OFFSET.
* tree-vect-data-refs.c (operator ==): Handle DR_OFFSET directly,
rather than OFFSET.
(comp_dr_with_seg_len_pair): Ditto.
(vect_prune_runtime_alias_test_list): Ditto. Also Canonicalize
struct dr_with_seg_len_pair against DR_OFFSET.
* tree-vect-loop-manip.c (vect_create_cond_for_alias_checks): Handle
DR_OFFSET directly.
* gcc.dg/vect/vect-alias-check-1.c: New test.
From-SVN: r237549
Diffstat (limited to 'gcc/tree-vect-loop-manip.c')
-rw-r--r-- | gcc/tree-vect-loop-manip.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/gcc/tree-vect-loop-manip.c b/gcc/tree-vect-loop-manip.c index 508bbf0..93b29b7 100644 --- a/gcc/tree-vect-loop-manip.c +++ b/gcc/tree-vect-loop-manip.c @@ -2238,11 +2238,16 @@ vect_create_cond_for_alias_checks (loop_vec_info loop_vinfo, tree * cond_expr) const dr_with_seg_len& dr_b = comp_alias_ddrs[i].second; tree segment_length_a = dr_a.seg_len; tree segment_length_b = dr_b.seg_len; - - tree addr_base_a - = fold_build_pointer_plus (DR_BASE_ADDRESS (dr_a.dr), dr_a.offset); - tree addr_base_b - = fold_build_pointer_plus (DR_BASE_ADDRESS (dr_b.dr), dr_b.offset); + tree addr_base_a = DR_BASE_ADDRESS (dr_a.dr); + tree addr_base_b = DR_BASE_ADDRESS (dr_b.dr); + tree offset_a = DR_OFFSET (dr_a.dr), offset_b = DR_OFFSET (dr_b.dr); + + offset_a = fold_build2 (PLUS_EXPR, TREE_TYPE (offset_a), + offset_a, DR_INIT (dr_a.dr)); + offset_b = fold_build2 (PLUS_EXPR, TREE_TYPE (offset_b), + offset_b, DR_INIT (dr_b.dr)); + addr_base_a = fold_build_pointer_plus (addr_base_a, offset_a); + addr_base_b = fold_build_pointer_plus (addr_base_b, offset_b); if (dump_enabled_p ()) { |