On Thu, Dec 20, 2018 at 07:46:31PM +0000, Richard Sandiford wrote:
> > vect_compute_data_ref_alignment uses DR_TARGET_ALIGNMENT
> > and DR_STEP_ALIGNMENT () % dr_target-alignment == 0 as check.
> >
> > I think it's preferable to use the same or similar values for the desired
> > alignment.
> 
> Yeah, I agree testing for a multiple is better than maybe_lt,
> and that we should be using DR_TARGET_ALIGNMENT rather than
> TYPE_ALIGN_UNIT.
> 
> (TYPE_ALIGN_UNIT is the ABI alignment, which might be higher or lower
> than the alignment the vectoriser is aiming for.  And I think the
> reasons for bailing out apply whenever the vectoriser can't reach
> the alignment it's aiming for, even if the alignment isn't needed
> for correctness.)

r267314 seems to have broken build:
../../gcc/tree-vect-data-refs.c: In function ‘opt_result 
vect_enhance_data_refs_alignment(loop_vec_info)’:
../../gcc/tree-vectorizer.h:1255:40: error: ‘struct data_reference’ has no 
member named ‘target_alignment’
 #define DR_TARGET_ALIGNMENT(DR) ((DR)->target_alignment)
                                        ^
../../gcc/tree-vect-data-refs.c:2171:11: note: in expansion of macro 
‘DR_TARGET_ALIGNMENT’
           DR_TARGET_ALIGNMENT (dr)))
           ^~~~~~~~~~~~~~~~~~~

The following patch makes it build again, will commit as obvious if it
passes bootstrap/regtest:

2018-12-21  Jakub Jelinek  <ja...@redhat.com>

        * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Use
        DR_TARGET_ALIGNMENT on dr_info rather than dr.

--- gcc/tree-vect-data-refs.c.jj        2018-12-21 00:40:50.000000000 +0100
+++ gcc/tree-vect-data-refs.c   2018-12-21 00:43:35.786222062 +0100
@@ -2168,7 +2168,7 @@ vect_enhance_data_refs_alignment (loop_v
                 done by doing some iterations of the non-vectorized loop.  */
              if (!multiple_p (LOOP_VINFO_VECT_FACTOR (loop_vinfo)
                               * DR_STEP_ALIGNMENT (dr),
-                              DR_TARGET_ALIGNMENT (dr)))
+                              DR_TARGET_ALIGNMENT (dr_info)))
                {
                  do_versioning = false;
                  break;


        Jakub

Reply via email to