mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-19 21:31:42 +08:00
Fix DR_GROUP_GAP for strided accesses (PR 92677)
When dissolving an SLP-only group of accesses, we should only set the gap to group_size - 1 for normal non-strided groups. 2019-11-29 Richard Sandiford <richard.sandiford@arm.com> gcc/ PR tree-optimization/92677 * tree-vect-loop.c (vect_dissolve_slp_only_groups): Set the gap to zero when dissolving a group of strided accesses. gcc/testsuite/ PR tree-optimization/92677 * gcc.dg/vect/pr92677.c: New test. From-SVN: r278852
This commit is contained in:
parent
02d895504c
commit
7e99af4816
@ -1,3 +1,9 @@
|
||||
2019-11-29 Richard Sandiford <richard.sandiford@arm.com>
|
||||
|
||||
PR tree-optimization/92677
|
||||
* tree-vect-loop.c (vect_dissolve_slp_only_groups): Set the gap
|
||||
to zero when dissolving a group of strided accesses.
|
||||
|
||||
2019-11-29 Richard Sandiford <richard.sandiford@arm.com>
|
||||
|
||||
PR tree-optimization/92596
|
||||
|
@ -1,3 +1,8 @@
|
||||
2019-11-29 Richard Sandiford <richard.sandiford@arm.com>
|
||||
|
||||
PR tree-optimization/92677
|
||||
* gcc.dg/vect/pr92677.c: New test.
|
||||
|
||||
2019-11-29 Richard Sandiford <richard.sandiford@arm.com>
|
||||
|
||||
PR tree-optimization/92596
|
||||
|
26
gcc/testsuite/gcc.dg/vect/pr92677.c
Normal file
26
gcc/testsuite/gcc.dg/vect/pr92677.c
Normal file
@ -0,0 +1,26 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-additional-options "-O3" } */
|
||||
|
||||
int a, c;
|
||||
int *b;
|
||||
long d;
|
||||
double *e;
|
||||
|
||||
void fn1() {
|
||||
long f;
|
||||
double g, h;
|
||||
while (c) {
|
||||
if (d) {
|
||||
g = *e;
|
||||
*(b + 4) = g;
|
||||
}
|
||||
if (f) {
|
||||
h = *(e + 2);
|
||||
*(b + 6) = h;
|
||||
}
|
||||
e += a;
|
||||
b += 8;
|
||||
c--;
|
||||
d += 2;
|
||||
}
|
||||
}
|
@ -1829,7 +1829,10 @@ vect_dissolve_slp_only_groups (loop_vec_info loop_vinfo)
|
||||
DR_GROUP_FIRST_ELEMENT (vinfo) = vinfo;
|
||||
DR_GROUP_NEXT_ELEMENT (vinfo) = NULL;
|
||||
DR_GROUP_SIZE (vinfo) = 1;
|
||||
DR_GROUP_GAP (vinfo) = group_size - 1;
|
||||
if (STMT_VINFO_STRIDED_P (first_element))
|
||||
DR_GROUP_GAP (vinfo) = 0;
|
||||
else
|
||||
DR_GROUP_GAP (vinfo) = group_size - 1;
|
||||
vinfo = next;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user