diff options
author | Richard Sandiford <richard.sandiford@linaro.org> | 2017-07-03 13:37:07 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2017-07-03 13:37:07 +0000 |
commit | 25f68d908ff41a912a9bacb88afba665dd59c2ff (patch) | |
tree | 67ac693ded20cc4120dbf6e06c393b0918f0e88a /gcc/tree-vect-stmts.c | |
parent | bb64297941f34721c7d4e94e754b454086511cf9 (diff) | |
download | gcc-25f68d908ff41a912a9bacb88afba665dd59c2ff.zip gcc-25f68d908ff41a912a9bacb88afba665dd59c2ff.tar.gz gcc-25f68d908ff41a912a9bacb88afba665dd59c2ff.tar.bz2 |
Add a helper for getting the overall alignment of a DR
This combines the information from previous patches to give a guaranteed
alignment for the DR as a whole. This should be a bit safer than using
base_element_aligned, since that only really took the base into account
(not the init or offset).
2017-07-03 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
* tree-data-ref.h (dr_alignment): Declare.
* tree-data-ref.c (dr_alignment): New function.
* tree-vectorizer.h (dataref_aux): Remove base_element_aligned.
* tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
set it.
* tree-vect-stmts.c (vectorizable_store): Use dr_alignment.
From-SVN: r249917
Diffstat (limited to 'gcc/tree-vect-stmts.c')
-rw-r--r-- | gcc/tree-vect-stmts.c | 12 |
1 files changed, 2 insertions, 10 deletions
diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index f01f297..1ad8eed 100644 --- a/gcc/tree-vect-stmts.c +++ b/gcc/tree-vect-stmts.c @@ -6353,11 +6353,7 @@ vectorizable_store (gimple *stmt, gimple_stmt_iterator *gsi, gimple **vec_stmt, misalign = 0; else if (DR_MISALIGNMENT (first_dr) == -1) { - if (DR_VECT_AUX (first_dr)->base_element_aligned) - align = TYPE_ALIGN_UNIT (elem_type); - else - align = get_object_alignment (DR_REF (first_dr)) - / BITS_PER_UNIT; + align = dr_alignment (vect_dr_behavior (first_dr)); misalign = 0; TREE_TYPE (data_ref) = build_aligned_type (TREE_TYPE (data_ref), @@ -7429,11 +7425,7 @@ vectorizable_load (gimple *stmt, gimple_stmt_iterator *gsi, gimple **vec_stmt, } else if (DR_MISALIGNMENT (first_dr) == -1) { - if (DR_VECT_AUX (first_dr)->base_element_aligned) - align = TYPE_ALIGN_UNIT (elem_type); - else - align = (get_object_alignment (DR_REF (first_dr)) - / BITS_PER_UNIT); + align = dr_alignment (vect_dr_behavior (first_dr)); misalign = 0; TREE_TYPE (data_ref) = build_aligned_type (TREE_TYPE (data_ref), |