diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/vect-align-4.c | 15 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/vect-nb-iter-ub-2.c | 7 | ||||
-rw-r--r-- | gcc/tree-vect-data-refs.c | 13 |
5 files changed, 31 insertions, 16 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8a0dc89..a419f02 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2018-01-05 Richard Sandiford <richard.sandiford@linaro.org> + * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't + punt for user-aligned variables. + +2018-01-05 Richard Sandiford <richard.sandiford@linaro.org> + * tree-chrec.c (chrec_contains_symbols): Return true for POLY_INT_CST. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5f1c771..2a18e22 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2018-01-05 Richard Sandiford <richard.sandiford@linaro.org> + + * gcc.dg/vect/vect-align-4.c: New test. + * gcc.dg/vect/vect-nb-iter-ub-2.c (cc): Remove alignment attribute + and redefine as a structure with an unaligned member "b". + (foo): Update accordingly. + 2018-01-05 Sudakshina Das <sudi.das@arm.com> PR target/82439 diff --git a/gcc/testsuite/gcc.dg/vect/vect-align-4.c b/gcc/testsuite/gcc.dg/vect/vect-align-4.c new file mode 100644 index 0000000..82bbf07 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/vect-align-4.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-require-effective-target vect_int } */ +/* { dg-add-options bind_pic_locally } */ + +__attribute__((aligned (8))) int a[2048] = {}; + +void +f1 (void) +{ + for (int i = 0; i < 2048; i++) + a[i]++; +} + +/* { dg-final { scan-tree-dump-not "Vectorizing an unaligned access" "vect" } } */ +/* { dg-final { scan-tree-dump-not "Alignment of access forced using peeling" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-nb-iter-ub-2.c b/gcc/testsuite/gcc.dg/vect/vect-nb-iter-ub-2.c index 4e13702..229ce98 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-nb-iter-ub-2.c +++ b/gcc/testsuite/gcc.dg/vect/vect-nb-iter-ub-2.c @@ -3,18 +3,19 @@ #include "tree-vect.h" int ii[32]; -char cc[66] __attribute__((aligned(1))) = +struct { char a; char b[66]; } cc = { 0, { 0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 11, 0, 12, 0, 13, 0, 14, 0, 15, 0, 16, 0, 17, 0, 18, 0, 19, 0, 20, 0, 21, 0, 22, 0, 23, 0, 24, 0, 25, 0, 26, 0, 27, 0, 28, 0, 29, 0, - 30, 0, 31, 0 }; + 30, 0, 31, 0 } +}; void __attribute__((noinline,noclone)) foo (int s) { int i; for (i = 0; i < s; i++) - ii[i] = (int) cc[i*2]; + ii[i] = (int) cc.b[i*2]; } int main (int argc, const char **argv) diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c index 26431203..e0a2f7b 100644 --- a/gcc/tree-vect-data-refs.c +++ b/gcc/tree-vect-data-refs.c @@ -920,19 +920,6 @@ vect_compute_data_ref_alignment (struct data_reference *dr) return true; } - if (DECL_USER_ALIGN (base)) - { - if (dump_enabled_p ()) - { - dump_printf_loc (MSG_NOTE, vect_location, - "not forcing alignment of user-aligned " - "variable: "); - dump_generic_expr (MSG_NOTE, TDF_SLIM, base); - dump_printf (MSG_NOTE, "\n"); - } - return true; - } - /* Force the alignment of the decl. NOTE: This is the only change to the code we make during the analysis phase, before deciding to vectorize the loop. */ |