This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/31996] New: can't determine dependence between p->a[x+i] and *((int *)p + x + i + 8)
- From: "pinskia at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 19 May 2007 00:40:43 -0000
- Subject: [Bug tree-optimization/31996] New: can't determine dependence between p->a[x+i] and *((int *)p + x + i + 8)
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
Just like PR 31995, this was found on the pointer plus branch after fixing
forwprop (note fowrwprop could be improved even more but that is a different
story and then we just get back to PR 31995 really), This testcase is really
vect-103 but modified to confuse data-ref:
/* { dg-require-effective-target vect_int } */
#include <stdlib.h>
#include <stdarg.h>
#include "tree-vect.h"
#define N 9
struct extraction
{
int a[N];
int b[N];
};
static int a[N] = {1,2,3,4,5,6,7,8,9};
static int b[N] = {17,24,7,0,2,3,4,31,82};
static int c[N] = {9,17,24,7,0,2,3,4,31};
int main1 (int x, int y) {
int i;
struct extraction *p;
p = (struct extraction *) malloc (sizeof (struct extraction));
for (i = 0; i < N; i++)
{
p->a[i] = a[i];
p->b[i] = b[i];
if (x == 135)
abort (); /* to avoid vectorization */
}
/* Vectorizable: distance > VF. */
for (i = 0; i < N; i++)
{
p->a[x + i] = *((int *)p + x + i + 8);
}
/* check results: */
for (i = 0; i < N; i++)
{
if (p->a[i] != c[i])
abort();
}
return 0;
}
int main (void)
{
check_vect ();
return main1 (0, N);
}
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "dependence distance modulo vf == 0" 1
"vect" } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
--
Summary: can't determine dependence between p->a[x+i] and *((int
*)p + x + i + 8)
Product: gcc
Version: 4.3.0
Status: UNCONFIRMED
Keywords: missed-optimization
Severity: normal
Priority: P3
Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: pinskia at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31996