OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /openrisc/tags/gnu-src/gcc-4.5.1/gcc-4.5.1-or32-1.0rc1/gcc/testsuite/gcc.dg/graphite
    from Rev 298 to Rev 338
    Reverse comparison

Rev 298 → Rev 338

/run-id-3.c
0,0 → 1,24
extern void abort (void);
 
__attribute__ ((noinline)) int
foo (int *zzz, unsigned int kk)
{
int a, b, d;
 
a = b = 0;
for (d = 0; d < 1000; d++)
{
if (kk != 0)
b = *zzz;
}
 
return b;
}
 
int
main (void)
{
if (foo (0, 0) != 0)
abort();
return 0;
}
run-id-3.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: block-7.c =================================================================== --- block-7.c (nonexistent) +++ block-7.c (revision 338) @@ -0,0 +1,56 @@ +/* { dg-require-effective-target size32plus } */ + +#define DEBUG 0 +#if DEBUG +#include +#endif + +#define N 200 + +int A[N][N], B[N][N], C[N][N]; + +static void __attribute__((noinline)) +matmult (void) +{ + int i, j, k; + + for (i = 0; i < N; i++) + for (j = 0; j < N; j++) + { + A[i][j] = 0; + for (k = 0; k < N; k++) + A[i][j] += B[i][k] * C[k][j]; + } +} + +extern void abort (); + +int +main (void) +{ + int i, j, res = 0; + + for (i = 0; i < N; i++) + for (j = 0; j < N; j++) + { + B[i][j] = j; + C[i][j] = i; + } + + matmult (); + + for (i = 0; i < N; i++) + res += A[i][i]; + +#if DEBUG + fprintf (stderr, "res = %d \n", res); +#endif + + if (res != 529340000) + abort (); + + return 0; +} + +/* { dg-final { scan-tree-dump-times "will be loop blocked" 1 "graphite" { xfail *-*-* } } } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
block-7.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: id-6.c =================================================================== --- id-6.c (nonexistent) +++ id-6.c (revision 338) @@ -0,0 +1,29 @@ +#define N 10000 +void foo (int); +int test () +{ + int a[N]; + unsigned i; + + for (i = 0; i < N; i++) + { + a[i] = i + 12; + + if (i == 40) + a[i] = i; + else + a[i] = i+1; + + + a[i] = i + 12; + a[i] = a[i+1]; + a[i] += a[i+2]; + a[i] += a[i+3]; + a[i] += a[i+4]; + a[i] += a[i+5]; + a[i] += a[i+6]; + + } + + return a[20]; +}
id-6.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: scop-0.c =================================================================== --- scop-0.c (nonexistent) +++ scop-0.c (revision 338) @@ -0,0 +1,22 @@ +int foo (void); +void bar (void); + +int toto() +{ + /* Scop 1. */ + int i, j, k; + int a[100][100]; + int b[100]; + int N = foo (); + + for (i = 0; i < 2*N+ 100; i++) + for (j = 0; j < 200; j++) + a[j][i] = a[j+1][10] + 2; + + return a[3][5] + b[1]; + /* End scop 1. */ +} + +/* { dg-final { scan-tree-dump-times "number of SCoPs: 1" 1 "graphite"} } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */ +
scop-0.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: id-8.c =================================================================== --- id-8.c (nonexistent) +++ id-8.c (revision 338) @@ -0,0 +1,14 @@ +int blah; +foo() +{ + int i; + + for (i=0 ; i< 7 ; i++) + { + if (i == 7 - 1) + blah = 0xfcc; + else + blah = 0xfee; + } + return blah; +}
id-8.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: scop-2.c =================================================================== --- scop-2.c (nonexistent) +++ scop-2.c (revision 338) @@ -0,0 +1,39 @@ +void bar (void); + +int toto() +{ + int i, j, k; + int a[100][100]; + int b[100]; + + for (i = 1; i < 100; i++) + { + for (j = 1; j < 100; j++) + for (k = 1; k < 100; k++) + a[j][k] = a[j+1][i-1] + 2; + + b[i] = b[i-1] + 2; + + bar (); + + for (j = 1; j < 100; j++) + a[j][i] = a[j+1][i-1] + 2; + + b[i] = b[i-1] + 2; + + bar (); + + for (j = 1; j < 100; j++) + a[j][i] = a[j+1][i-1] + 2; + + b[i] = a[i-1][i] + 2; + + for (j = 1; j < 100; j++) + a[j][i] = a[j+1][i-1] + 2; + } + + return a[3][5] + b[1]; +} + +/* { dg-final { scan-tree-dump-times "number of SCoPs: 4" 1 "graphite"} } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
scop-2.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: scop-4.c =================================================================== --- scop-4.c (nonexistent) +++ scop-4.c (revision 338) @@ -0,0 +1,29 @@ +void bar (); + +int toto() +{ + int i, j, k; + int a[100][100]; + int b[100]; + + for (i = 1; i < 100; i++) + { + for (j = 1; j < 80; j++) + a[j][i] = a[j+1][2*i-1*j] + 12; + + b[i] = b[i-1] + 10; + + for (j = 1; j < 60; j++) + a[j][i] = a[j+1][i-1] + 8; + + bar (); + + if (i == 23) + b[i] = a[i-1][i] + 6; + } + + return a[3][5] + b[1]; +} + +/* { dg-final { scan-tree-dump-times "number of SCoPs: 2" 1 "graphite"} } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
scop-4.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: interchange-11.c =================================================================== --- interchange-11.c (nonexistent) +++ interchange-11.c (revision 338) @@ -0,0 +1,49 @@ +/* { dg-require-effective-target size32plus } */ + +#define DEBUG 0 +#if DEBUG +#include +#endif + +double u[1782225]; + +static void __attribute__((noinline)) +foo (int N, int *res) +{ + int i, j; + double sum = 0.0; + + for (i = 0; i < 1335; i++) + { + for (j = 0; j < 1335; j++) + sum = sum + u[i + 1335 * j]; + + u[1336 * i] *= 2; + } + *res = sum; +} + +extern void abort (); + +int +main (void) +{ + int i, res; + + for (i = 0; i < 1782225; i++) + u[i] = 2; + + foo (1335, &res); + +#if DEBUG + fprintf (stderr, "res = %d \n", res); +#endif + + if (res != 3564450) + abort (); + + return 0; +} + +/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" { xfail *-*-* } } } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
interchange-11.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: scop-6.c =================================================================== --- scop-6.c (nonexistent) +++ scop-6.c (revision 338) @@ -0,0 +1,31 @@ +void bar (void); + +int toto() +{ + int i, j, k; + int a[100][100]; + int b[100]; + + for (i = 1; i < 100; i++) + { + for (j = 1; j < 100; j++) + b[i+j] = b[i+j-1] + 2; + + if (i * 2 == i + 8) + b[i+k] = b[i+k-1] + 2; + else + { + for (k = 1; k < 100; k++) + b[i+k] = b[i+k-1] + 2; + bar (); + } + + for (k = 1; k < 100; k++) + b[i+k] = b[i+k-5] + 2; + } + + return a[3][5] + b[1]; +} + +/* { dg-final { scan-tree-dump-times "number of SCoPs: 3" 1 "graphite"} } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
scop-6.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: scop-8.c =================================================================== --- scop-8.c (nonexistent) +++ scop-8.c (revision 338) @@ -0,0 +1,31 @@ +int bar (void); + +int toto() +{ + int i, j, k; + int a[100][100]; + int b[100]; + + for (i = 1; i < 100; i++) + { + for (j = 1; j < 100; j++) + b[i+j] = b[i+j-1] + 2; + + if (i * 2 == i + 8) + { + for (j = 1; j < 100; j++) + if (bar ()) + b[i+j] = b[i+j-1] + 2; + } + else + a[i][i] = 2; + + for (k = 1; k < 100; k++) + b[i+k] = b[i+k-5] + 2; + } + + return a[3][5] + b[1]; +} + +/* { dg-final { scan-tree-dump-times "number of SCoPs: 2" 1 "graphite"} } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
scop-8.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: id-11.c =================================================================== --- id-11.c (nonexistent) +++ id-11.c (revision 338) @@ -0,0 +1,14 @@ +double +foo (double x, double *cof) +{ + int i; + double tmp, value; + + for (i = 10; i >= 0; i--) + { + value += cof[i] / tmp; + tmp -= 1.0; + } + + return value; +}
id-11.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: id-13.c =================================================================== --- id-13.c (nonexistent) +++ id-13.c (revision 338) @@ -0,0 +1,11 @@ +void +foo (int N, int k, int *fb) +{ + int i, j; + for (i = 1; i <= N; i++) + { + for (j = 1; j < i; j++) + k %= N; + bar (k); + } +}
id-13.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: id-15.c =================================================================== --- id-15.c (nonexistent) +++ id-15.c (revision 338) @@ -0,0 +1,120 @@ +/* { dg-require-effective-target int32plus } */ + +typedef long unsigned int size_t; +extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + +static void +encode (words, low, hi) + long *words; + unsigned long low; + long hi; +{ + words[0] = ((low) & (((unsigned long) 1 << (sizeof(unsigned long) / 2)) - 1)); + words[1] = ((unsigned long) (low) >> sizeof(unsigned long) / 2); + words[2] = ((hi) & (((unsigned long) 1 << (sizeof(unsigned long) / 2)) - 1)); + words[3] = ((unsigned long) (hi) >> sizeof(unsigned long) / 2); +} + +static void +decode (words, low, hi) + long *words; + unsigned long *low; + long *hi; +{ + *low = words[0] + words[1] * ((unsigned long) 1 << sizeof(unsigned long) / 2); + *hi = words[2] + words[3] * ((unsigned long) 1 << sizeof(unsigned long) / 2); +} + +int +neg_double (l1, h1, lv, hv) + unsigned long l1; + long h1; + unsigned long *lv; + long *hv; +{ + if (l1 == 0) + { + *lv = 0; + *hv = - h1; + return (*hv & h1) < 0; + } + else + { + *lv = -l1; + *hv = ~h1; + return 0; + } +} + +int +add_double (l1, h1, l2, h2, lv, hv) + unsigned long l1, l2; + long h1, h2; + unsigned long *lv; + long *hv; +{ + unsigned long l; + long h; + + l = l1 + l2; + h = h1 + h2 + (l < l1); + + *lv = l; + *hv = h; + return ((~((h1) ^ (h2)) & ((h1) ^ (h))) < 0); +} + +int +mul_double (l1, h1, l2, h2, lv, hv) + unsigned long l1, l2; + long h1, h2; + unsigned long *lv; + long *hv; +{ + long arg1[4]; + long arg2[4]; + long prod[4 * 2]; + unsigned long carry; + int i, j, k; + unsigned long toplow, neglow; + long tophigh, neghigh; + + encode (arg1, l1, h1); + encode (arg2, l2, h2); + + memset ((char *) prod, 0, sizeof prod); + + for (i = 0; i < 4; i++) + { + carry = 0; + for (j = 0; j < 4; j++) + { + k = i + j; + + carry += arg1[i] * arg2[j]; + + carry += prod[k]; + prod[k] = ((carry) & (((unsigned long) 1 << (sizeof(unsigned long) / 2)) - 1)); + carry = ((unsigned long) (carry) >> sizeof(unsigned long) / 2); + } + prod[i + 4] = carry; + } + + decode (prod, lv, hv); + + + + decode (prod + 4, &toplow, &tophigh); + if (h1 < 0) + { + neg_double (l2, h2, &neglow, &neghigh); + add_double (neglow, neghigh, toplow, tophigh, &toplow, &tophigh); + } + if (h2 < 0) + { + neg_double (l1, h1, &neglow, &neghigh); + add_double (neglow, neghigh, toplow, tophigh, &toplow, &tophigh); + } + return (*hv < 0 ? ~(toplow & tophigh) : toplow | tophigh) != 0; +} +
id-15.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: id-pr43464.c =================================================================== --- id-pr43464.c (nonexistent) +++ id-pr43464.c (revision 338) @@ -0,0 +1,63 @@ +typedef struct sv SV; +typedef struct regnode +{ + char flags; +} regnode; +typedef struct regexp +{ +} regexp; +typedef struct cop +{ + SV *cop_warnings; +} COP; +extern const unsigned char PL_utf8skip[]; +extern char PL_dowarn; +extern COP *volatile PL_curcop; +char * +S_find_byclass (regexp * prog, regnode * c, char *s, char *strend, + char *startpos, int norun) +{ + register long unsigned int uskip; + char *e; + switch (((c)->flags)) + { + case 17: + { + while (s + (uskip = PL_utf8skip[*s]) <= strend) + { + if (c->flags || S_reginclass (c)) + if (norun || S_regtry (prog, s)) + goto got_it; + s += uskip; + } + unsigned long c, f; + long unsigned int len; + { + while (s <= e) + { + c = Perl_utf8n_to_uvuni (s, 13, &len, + (((PL_curcop->cop_warnings != + ((SV *) ((void *) 0))) + && PL_dowarn)) ? 0 : 0x00FF); + if (c == 0 && (norun || S_regtry (prog, s))) + if (f != c && (norun || S_regtry (prog, s))) + goto got_it; + } + } + } + } +got_it: + return s; +} +Perl_re_intuit_start (regexp * prog) +{ + S_find_byclass (prog, 0, 0, 0, 0, 1); +} +Perl_regexec_flags (register regexp * prog, + register char *strend) +{ + S_find_byclass (prog, 0, 0, strend, 0, 0); +} +S_regtry (regexp * prog, char *startpos) +{ +}
id-pr43464.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: id-17.c =================================================================== --- id-17.c (nonexistent) +++ id-17.c (revision 338) @@ -0,0 +1,21 @@ +typedef struct +{ + int offset_for_ref_frame[256]; +} seq_parameter_set_rbsp_t; + +typedef struct +{ + unsigned int num_ref_frames_in_pic_order_cnt_cycle; + int offset_for_ref_frame[1]; + int auto_crop_right; +} ImageParameters; + +ImageParameters *img; + +void GenerateSequenceParameterSet(seq_parameter_set_rbsp_t *sps) +{ + unsigned i; + for (i=0; inum_ref_frames_in_pic_order_cnt_cycle; i++) + sps->offset_for_ref_frame[i] = img->offset_for_ref_frame[i]; + error("foo"); +}
id-17.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr38510.c =================================================================== --- pr38510.c (nonexistent) +++ pr38510.c (revision 338) @@ -0,0 +1,40 @@ +/* { dg-options "-O2 -fgraphite-identity" } */ +typedef long int integer; +typedef double doublereal; + +static int balanc_(nm, n, a, low, igh, scale) +doublereal *a; +{ + integer a_dim1, a_offset, i__1, i__2; + integer iexc; + integer i__, j, k, l, m; + integer jj; +goto L100; +L20: +if (j == m) { +goto L50; +} +for (i__ = 1; i__ <= i__1; ++i__) { +a[i__ + j * a_dim1] = a[i__ + m * a_dim1]; +} +L50: +switch ((int)iexc) { +case 2: goto L130; +} +L100: +for (jj = 1; jj <= i__1; ++jj) { +goto L20; +} +L130: +for (j = k; j <= i__1; ++j) { +goto L20; +} +} + +int pymol_rg_(integer *nm, integer *n, doublereal *a, doublereal *wr, + doublereal *fv1,integer *ierr) +{ + integer a_dim1, a_offset, z_dim1, z_offset; + integer is1, is2; + balanc_(nm, n, &a[a_offset], &is1, &is2, &fv1[1]); +}
pr38510.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr40157.c =================================================================== --- pr40157.c (nonexistent) +++ pr40157.c (revision 338) @@ -0,0 +1,13 @@ +/* { dg-require-effective-target int32plus } */ +/* { dg-options "-O2 -fgraphite-identity -floop-block" } */ + +int buffer[256*256]; +int main(void) +{ + int *dest = buffer; + int x, y; + for(x = 0; x < 256; x++) + for(y = 0; y < 256; y++) + *dest++ = 0; + return 0; +}
pr40157.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr43083.c =================================================================== --- pr43083.c (nonexistent) +++ pr43083.c (revision 338) @@ -0,0 +1,14 @@ +/* { dg-options "-O3 -fgraphite-identity" } */ + +extern void baz(void); + +static inline int bar(void) +{ + int i; + for (i = 0; i < 10; i++) baz(); +} + +int foo(void) +{ + if (bar() != 0) return 0; +}
pr43083.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: scop-11.c =================================================================== --- scop-11.c (nonexistent) +++ scop-11.c (revision 338) @@ -0,0 +1,32 @@ +void bar (); + +int toto() +{ + int i,j, b; + int a[100]; + + if (i == 20) + { + for (j = 0; j <= 20; j++) + a[j] = b + i; + b = 3; + bar(); + } + else + { + if (i == 30) + { + for (j = 0; j <= 20; j++) + a[j] = b + i; + b = 5; + } + } + + for (j = 0; j <= 20; j++) + a[j] = b + i; + + return a[b]; +} + +/* { dg-final { scan-tree-dump-times "number of SCoPs: 3" 1 "graphite"} } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
scop-11.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: interchange-0.c =================================================================== --- interchange-0.c (nonexistent) +++ interchange-0.c (revision 338) @@ -0,0 +1,50 @@ +/* { dg-require-effective-target size32plus } */ + +#define DEBUG 0 + +#if DEBUG +#include +#endif + +#define N 1000 +int a[N][N]; + +static int __attribute__((noinline)) +foo (void) +{ + int j; + int i; + + for (i = 0; i < N; i++) + for (j = 0; j < N; j++) + a[j][i] = a[j][i] + 1; + + return a[N-1][N-1]; +} + +extern void abort (); + +int +main (void) +{ + int i, j, res; + + for (i = 0; i < N; i++) + for (j = 0; j < N; j++) + a[i][j] = 1; + + a[N-1][N-1] = 12; + res = foo (); + +#if DEBUG + fprintf (stderr, "res = %d \n", res); +#endif + + if (res != 13) + abort (); + + return 0; +} + +/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */ +/* { dg -final { cleanup-tree-dump "graphite" } } */
interchange-0.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr39260.c =================================================================== --- pr39260.c (nonexistent) +++ pr39260.c (revision 338) @@ -0,0 +1,17 @@ +/* { dg-options "-O2 -fgraphite-identity -ffast-math" } */ + +VBR_encode_frame (int mode_gr, int channels_out, int max_bits[2][2]) +{ + int max_nbits_ch[2][2]; + int gr, ch; + for (gr = 0; gr < mode_gr; ++gr) + { + float f[2], s = 0; + for (ch = 0; ch < channels_out; ++ch) + if (max_nbits_ch[gr][ch] > 0) + s += f[ch]; + for (ch = 0; ch < channels_out; ++ch) + if (s > 0) + max_nbits_ch[gr][ch] = 7680 * f[ch] / s; + } +}
pr39260.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr42914.c =================================================================== --- pr42914.c (nonexistent) +++ pr42914.c (revision 338) @@ -0,0 +1,21 @@ +/* { dg-options "-O2 -g -ffast-math -fgraphite-identity" } */ + +int find_sad_16x16(int *mode) +{ + int current, best; + int M1[16][16],M0[4][4][4][4],M3[4],M4[4][4]; + int i,j,k; + int ii,jj; + + for (jj=0;jj<4;jj++) + for (ii=0;ii<4;ii++) + for (j=0;j<4;j++) + for (j=0;j<4;j++) + current += abs(M0[i][ii][j][jj]); + + if(current < best) + { + best = current; + *mode = k; + } +}
pr42914.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: scop-13.c =================================================================== --- scop-13.c (nonexistent) +++ scop-13.c (revision 338) @@ -0,0 +1,41 @@ +void bar (); + +int toto() +{ + int i,j, b; + int a[100]; + + if (i == 20) + { + b = 3; + goto B; + } + else + { + if (i == 30) + { + a[i] = b; + + + for (j = 0; j <= 20; j++) + a[j] = b + i; + + B: + + for (j = 0; j <= 20; j++) + a[j+b] = b + i; + + bar (); + } + else + { + a[i] = b + 3; + } + } + + + return a[b]; +} + +/* { dg-final { scan-tree-dump-times "number of SCoPs: 2" 1 "graphite"} } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
scop-13.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr38073.c =================================================================== --- pr38073.c (nonexistent) +++ pr38073.c (revision 338) @@ -0,0 +1,9 @@ +/* { dg-options "-O3 -fgraphite-identity" } */ + +test_seg(int a, int b) +{ + int i,r=1; + for(i=0; i
pr38073.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: interchange-2.c =================================================================== --- interchange-2.c (nonexistent) +++ interchange-2.c (revision 338) @@ -0,0 +1,56 @@ +/* { dg-require-effective-target size32plus } */ + +/* Formerly known as ltrans-2.c */ + +#define DEBUG 0 +#if DEBUG +#include +#endif + +double u[1782225]; + +static void __attribute__((noinline)) +foo (int N, int *res) +{ + unsigned int i, j; + double sum = 0; + + /* This loop should be converted to a perfect nest and + interchanged. */ + for (i = 0; i < N; i++) + { + for (j = 0; j < N; j++) + { + sum = sum + u[i + 1335 * j]; + if (j == N - 1) + u[1336 * i] *= 2; + } + } + + *res = sum + N + u[1336 * 2] + u[1336]; +} + +extern void abort (); + +int +main (void) +{ + int i, j, res; + + for (i = 0; i < 1782225; i++) + u[i] = 2; + + foo (1335, &res); + +#if DEBUG + fprintf (stderr, "res = %d \n", res); +#endif + + if (res != 3565793) + abort (); + + return 0; +} + +/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" { xfail *-*-* } } } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
interchange-2.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr42771.c =================================================================== --- pr42771.c (nonexistent) +++ pr42771.c (revision 338) @@ -0,0 +1,19 @@ +/* { dg-options "-O3 -fgraphite-identity" } */ + +extern int *A; +extern int B[][4]; +extern void bar(void); + +void foo(int im, int jm, int cond) +{ + int i, j; + if (cond) { + for (i = 0; i < 256; i++) + A[i] = 0; + bar(); + } + for (i = 0; i < im; i++) + for (j = 1; j < jm; j++) + if (jm != 8 || j != jm >> 1) + B[j][0] ^= B[j-1][0]; +}
pr42771.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: scop-15.c =================================================================== --- scop-15.c (nonexistent) +++ scop-15.c (revision 338) @@ -0,0 +1,51 @@ +# define EXTERN(type, array) extern type array[] +typedef unsigned char uch; +typedef unsigned short ush; +EXTERN(uch, window); +EXTERN(ush, prev); +#ifndef WSIZE +# define WSIZE 0x8000 +#endif +#define MIN_MATCH 3 +#define MAX_MATCH 258 +#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1) +#define MAX_DIST (WSIZE-MIN_LOOKAHEAD) +#define near +typedef unsigned IPos; +unsigned near max_chain_length; +extern unsigned near strstart; +unsigned int near prev_length; +#define NIL 0 +unsigned near good_match; +int near nice_match; +#define WMASK (WSIZE-1) +int longest_match(IPos cur_match) +{ + unsigned chain_length = max_chain_length; + register uch *scan = window + strstart; + register uch *match; + register int len; + int best_len = prev_length; + IPos limit = strstart > (IPos)MAX_DIST ? strstart - (IPos)MAX_DIST : NIL; + register uch *strend = window + strstart + MAX_MATCH; + register uch scan_end = scan[best_len]; + if (prev_length >= good_match) { + } + do { + if (match[best_len] != scan_end || + *++match != scan[1]) continue; + do { + } while (*++scan == *++match && *++scan == *++match && + scan < strend); + len = MAX_MATCH - (int)(strend - scan); + if (len > best_len) { + best_len = len; + if (len >= nice_match) break; + } + } while ((cur_match = prev[cur_match & WMASK]) > limit + && --chain_length != 0); + return best_len; +} + +/* { dg-final { scan-tree-dump-times "number of SCoPs: 0" 1 "graphite"} } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
scop-15.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: interchange-4.c =================================================================== --- interchange-4.c (nonexistent) +++ interchange-4.c (revision 338) @@ -0,0 +1,50 @@ +/* { dg-require-effective-target size32plus } */ + +/* Formerly known as ltrans-4.c */ + +#define DEBUG 0 +#if DEBUG +#include +#endif + +double u[1782225]; + +static int __attribute__((noinline)) +foo (int N, int *res) +{ + int i, j; + double sum = 0; + for (i = 0; i < N; i++) + for (j = 0; j < N; j++) + sum = sum + u[i + 1335 * j]; + + for (i = 0; i < N; i++) + u[1336 * i] *= 2; + + *res = sum + N + u[1336 * 2] + u[1336]; +} + +extern void abort (); + +int +main (void) +{ + int i, j, res; + + for (i = 0; i < 1782225; i++) + u[i] = 2; + + foo (1335, &res); + +#if DEBUG + fprintf (stderr, "res = %d \n", res); +#endif + + if (res != 3565793) + abort (); + + return 0; +} + +/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
interchange-4.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: scop-17.c =================================================================== --- scop-17.c (nonexistent) +++ scop-17.c (revision 338) @@ -0,0 +1,24 @@ +/* { dg-require-effective-target size32plus } */ + +#define N 10000 +void foo (int); +int test () +{ + int a[N][N]; + unsigned i, j; + + for (i = 0; i < N; i++) + for (j = 0; j < N; j++) + a[i][j] = i*j; + + for (i = 1; i < N; i++) + for (j = 1; j < (N-1) ; j++) + a[i][j] = a[i-1][j+1] * a[i-1][j+1]/2; + + for (i = 0; i < N; i++) + for (j = 0; j < N; j++) + foo (a[i][j]); +} + +/* { dg-final { scan-tree-dump-times "number of SCoPs: 2" 1 "graphite"} } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
scop-17.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: interchange-6.c =================================================================== --- interchange-6.c (nonexistent) +++ interchange-6.c (revision 338) @@ -0,0 +1,51 @@ +/* { dg-require-effective-target size32plus } */ + +/* Formerly known as ltrans-6.c */ + +#define DEBUG 0 +#if DEBUG +#include +#endif + +#define N 100 +#define M 200 + +static int __attribute__((noinline)) +foo (int A[N][M]) +{ + int i, j; + + /* This loop should be interchanged. */ + for(j = 0; j < M; j++) + for(i = 0; i < N; i++) + A[i][j] = A[i][j] + A[i][j]; + + return A[0][0] + A[N-1][M-1]; +} + +extern void abort (); + +int +main (void) +{ + int A[N][M]; + int i, j, res; + + for (i = 0; i < N; i++) + for (j = 0; j < M; j++) + A[i][j] = 2; + + res = foo (A); + +#if DEBUG + fprintf (stderr, "res = %d \n", res); +#endif + + if (res != 8) + abort (); + + return 0; +} + +/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
interchange-6.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: scop-19.c =================================================================== --- scop-19.c (nonexistent) +++ scop-19.c (revision 338) @@ -0,0 +1,34 @@ +typedef unsigned int __uint32_t; +typedef __uint32_t __size_t; +typedef __size_t size_t; +struct demangle_component +{ + union + { + } u; +}; +enum d_builtin_type_print +{ + D_PRINT_VOID +}; +struct d_growable_string +{ + size_t alc; +}; +d_growable_string_resize (struct d_growable_string *dgs, size_t need) +{ + size_t newalc; + newalc = dgs->alc > 0 ? dgs->alc : 2; + while (newalc < need) + newalc <<= 1; +} +d_growable_string_append_buffer (struct d_growable_string *dgs, + const char *s, size_t l) +{ + size_t need; + if (need > dgs->alc) + d_growable_string_resize (dgs, need); +} +/* { dg-final { scan-tree-dump-times "number of SCoPs: 0" 2 "graphite"} } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */ +
scop-19.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: interchange-8.c =================================================================== --- interchange-8.c (nonexistent) +++ interchange-8.c (revision 338) @@ -0,0 +1,85 @@ +#define DEBUG 0 +#if DEBUG +#include +#endif + +int B[4]; +int A[4][4][4][4]; + +static int __attribute__((noinline)) +foo (void) +{ + int i, j, k, l; + + for (l = 0; l < 4; l++) + { + for (k = 0; k < 4; k++) + { + for (j = 0; j < 4; j++) + { + for (i = 0; i < 2; i++) + { + B[i] = A[i][k][j][l] + A[3 - i][k][j][l]; + B[3 - i] = A[i][k][j][l] - A[3 - i][k][j][l]; + } + A[0][k][j][l] = B[0] + B[1]; + A[2][k][j][l] = B[0] - B[1]; + A[1][k][j][l] = B[3] + B[2]; + A[3][k][j][l] = B[3] - B[2]; + } + + for (i = 0; i < 4; i++) + { + for (j = 0; j < 2; j++) + { + B[j] = A[i][k][j][l] + A[i][k][3 - j][l]; + B[3 - j] = A[i][k][j][l] - A[i][k][3 - j][l]; + } + A[i][k][0][l] = B[0] + B[1]; + A[i][k][2][l] = B[0] - B[1]; + A[i][k][1][l] = B[3] + B[2]; + A[i][k][3][l] = B[3] - B[2]; + } + } + } + + return A[0][1][0][2] + A[0][3][0][3] + A[0][2][0][2] + A[0][1][0][1] + A[3][3][0][2]; +} + +extern void abort (); + +int +main (void) +{ + int i, j, k, l, res; + + for (i = 0; i < 4; i++) + B[i] = 2; + + for (i = 0; i < 4; i++) + for (j = 0; j < 4; j++) + for (k = 0; k < 4; k++) + for (l = 0; l < 4; l++) + A[i][j][k][l] = i + j + k + l; + + res = foo (); + +#if DEBUG + for (i = 0; i < 4; i++) + for (j = 0; j < 4; j++) + for (k = 0; k < 4; k++) + for (l = 0; l < 4; l++) + fprintf (stderr, "A[%d][%d][%d][%d] = %d \n", i, j, k, l, A[i][j][k][l]); + + fprintf (stderr, "res = %d \n", res); +#endif + + if (res != 424) + abort (); + + return 0; +} + +/* Loops K and L should be interchanged. */ +/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" { xfail *-*-* } } } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
interchange-8.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr37684.c =================================================================== --- pr37684.c (nonexistent) +++ pr37684.c (revision 338) @@ -0,0 +1,67 @@ +/* { dg-options "-O2 -fdump-tree-graphite-all" } */ + +typedef struct _IO_FILE FILE; +struct _IO_marker { +}; +enum __codecvt_result +{ + __codecvt_noconv +}; +struct _IO_FILE { +}; +extern struct _IO_FILE *stderr; + +typedef + struct { + unsigned int avail_in; + unsigned int avail_out; + void *state; + void *(*bzalloc)(void *,int,int); + void *opaque; + } + bz_stream; +extern int BZ2_bzCompressInit ( + bz_stream* strm, + int blockSize100k, + int verbosity, + int workFactor + ); +typedef unsigned char Bool; +typedef int Int32; +typedef unsigned int UInt32; + +typedef + struct { + Int32 mode; + Int32 state; + UInt32* arr1; + UInt32* arr2; + UInt32* ftab; + Int32 nblock; + Int32 nblockMAX; + Bool inUse[256]; + Int32 blockNo; + } + EState; + +void prepare_new_block ( EState* s ) +{ + Int32 i; + for (i = 0; i < 256; i++) s->inUse[i] = ((Bool)0); + s->blockNo++; +} + +int BZ2_bzCompressInit + ( bz_stream* strm, + int blockSize100k, + int verbosity, + int workFactor ) +{ + EState* s; + s = (strm->bzalloc)(strm->opaque,(sizeof(EState)),1); + if (s->arr1 == ((void *)0) || s->arr2 == ((void *)0) || s->ftab == ((void *)0)) { + } + prepare_new_block ( s ); +} + +/* { dg-final { cleanup-tree-dump "graphite" } } */
pr37684.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr41888.c =================================================================== --- pr41888.c (nonexistent) +++ pr41888.c (revision 338) @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-g -O2 -ftree-loop-distribution -fgraphite-identity" } */ + +int +foo (int *x) +{ + int a[10], b[10]; + int i; + a[9] = 8; + b[9] = 8; + for (i = 0; i < 9; i++) + { + a[i] = *x++; + b[i] = 1; + } + b[i] = b[i] & !(a[i] ^ *x++); + return b[i] ? i + 1 : 0; +}
pr41888.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr38498.c =================================================================== --- pr38498.c (nonexistent) +++ pr38498.c (revision 338) @@ -0,0 +1,19 @@ +/* { dg-options "-O2" } */ + +double test_vector (float **data, int rows, int cols, int vqrows,double epsilon, int maxiter,int **mean, int *map) +{ + int i, j, r, it; + double sqerr, prev_sqerr=0, t; + unsigned int *sel; + int *count; + for (it = 0;; it++) + { + if ((sqerr == 0.0) || (it >= maxiter-1) ||((it > 0) && ( ((prev_sqerr - sqerr) / prev_sqerr) < epsilon )) ) + for (i = 0; i < vqrows; i++) + { + for (j = 0; j < cols; j++) + mean[i][j] = 0.0; + count[i] = 0; + } + } +}
pr38498.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr43012.c =================================================================== --- pr43012.c (nonexistent) +++ pr43012.c (revision 338) @@ -0,0 +1,74 @@ +/* This testcase is from PR43012. + You will need CLooG-PPL 0.15.8 or later to have this testcase fixed. */ + +/* { dg-do run } */ +/* { dg-options "-O2 -floop-strip-mine" } */ + +extern void abort (void); + +#ifdef DBG +extern int printf (const char *, ...); +#endif + +#define LAST_TOKEN 534 +#define FLOAT_FUNCT_TOKEN 64 +#define VECTOR_FUNCT_TOKEN 77 +#define COLOUR_KEY_TOKEN 89 + +int Table[LAST_TOKEN]; + +void +pre_init_tokenizer () +{ + int i; + + for (i = 0; i < LAST_TOKEN; i++) + { + Table[i] = i; + if (i < FLOAT_FUNCT_TOKEN) + Table[i] = FLOAT_FUNCT_TOKEN; + else + { + if (i < VECTOR_FUNCT_TOKEN) + Table[i] = VECTOR_FUNCT_TOKEN; + else + { + if (i < COLOUR_KEY_TOKEN) + Table[i] = COLOUR_KEY_TOKEN; + } + } + } +} + +void +check () +{ + int i; + + for (i = 0; i < FLOAT_FUNCT_TOKEN; i++) + if (Table[i] != FLOAT_FUNCT_TOKEN) + abort (); + for (i = FLOAT_FUNCT_TOKEN; i < VECTOR_FUNCT_TOKEN; i++) + if (Table[i] != VECTOR_FUNCT_TOKEN) + abort (); + for (i = VECTOR_FUNCT_TOKEN; i < COLOUR_KEY_TOKEN; i++) + if (Table[i] != COLOUR_KEY_TOKEN) + abort (); + for (i = COLOUR_KEY_TOKEN; i < LAST_TOKEN; i++) + if (Table[i] != i) + abort (); +} + +int +main () +{ + int i; + + pre_init_tokenizer (); +#ifdef DBG + for (i = 0; i < LAST_TOKEN; i++) + printf ("%3d: %d\n", i, Table[i]); +#endif + check (); + return 0; +}
pr43012.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr42221.c =================================================================== --- pr42221.c (nonexistent) +++ pr42221.c (revision 338) @@ -0,0 +1,24 @@ +/* { dg-options "-Os -fgraphite-identity" } */ + +static void b2w(unsigned int *out, const unsigned char *in, unsigned int len) +{ + const unsigned char *bpend = in + len; + for (; in != bpend; in += 4, ++out) + { + *out = (unsigned int) (in[0] ) | + (unsigned int) (in[3] << 24); + } +} +static void md4step(unsigned int state[4], const unsigned char *data) +{ + unsigned int A, X[16]; + b2w(X, data, 64); + state[0] += A; +} +void md4sum(void) +{ + unsigned char final[128]; + unsigned int state[4]; + md4step(state, final); + md4step(state, final + 64); +}
pr42221.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr42205-1.c =================================================================== --- pr42205-1.c (nonexistent) +++ pr42205-1.c (revision 338) @@ -0,0 +1,17 @@ +/* { dg-options "-O1 -ffast-math -floop-interchange" } */ + +int adler32(int adler, char *buf, int n) +{ + int sum = 0; + do { + adler += buf[0]; + sum += adler; + adler += buf[1]; + sum += adler; + adler += buf[2]; + sum += adler; + adler += buf[3]; + sum += adler; + } while (--n); + return adler | (sum << 16); +}
pr42205-1.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr42521.c =================================================================== --- pr42521.c (nonexistent) +++ pr42521.c (revision 338) @@ -0,0 +1,18 @@ +/* { dg-options "-O3 -fgraphite-identity" } */ + +extern int *A; +extern int B[][4]; + +void foo(int im, int jm, int cond) +{ + int i, j; + if (cond) + for (i = 0; i < 256; i++) + A[i] = 0; + + for (i = 0; i < im; i++) + for (j = 1; j < jm; j++) + if (jm != 8 || j != jm >> 1) + B[j][0] ^= B[j-1][0]; + +}
pr42521.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr40281.c =================================================================== --- pr40281.c (nonexistent) +++ pr40281.c (revision 338) @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-O -fprefetch-loop-arrays -w" } */ +/* { dg-options "-O -fprefetch-loop-arrays -march=i686 -msse -w" { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */ +/* { dg-require-effective-target sse { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */ + +void foo(int); +void bar(int n) +{ + int a[2], i, j = 0; + + for (i = 0; i < 2; i += j+1) + for (j = 0; j < (n ? 1 : 2); ++j) + foo(a[i] + a[j]); +}
pr40281.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr38500.c =================================================================== --- pr38500.c (nonexistent) +++ pr38500.c (revision 338) @@ -0,0 +1,29 @@ +/* { dg-options "-O3 -fgraphite-identity" } */ + +typedef unsigned char U8; +extern char test1; + +char *Perl_screaminstr (int, int, int); + +void +Perl_re_intuit_start( int minlen, char *strend, unsigned int flags, int i) +{ + register int start_shift = 0; + register int end_shift = 0; + register char *s; + char *strbeg; + char *t; + if(i > 0) + goto success_at_start; + int end = 0; + int eshift = (test1 ? Perl_utf8_distance((U8*)strend,(U8*)s) : (U8*)strend - (U8*)s) - end; + if (end_shift < eshift) + end_shift = eshift; + restart: + s = Perl_screaminstr(start_shift + (s - strbeg), end_shift, 0); + while( t < strend - minlen){ + } + success_at_start: + eshift = (test1 ? Perl_utf8_distance((U8*)strend,(U8*)s) : (U8*)strend - (U8*)s) - end; + goto restart; +}
pr38500.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: scop-20.c =================================================================== --- scop-20.c (nonexistent) +++ scop-20.c (revision 338) @@ -0,0 +1,27 @@ +void bar (void); + +int toto() +{ + int i, j, k; + int a[100][100]; + int b[100]; + + for (i = 1; i < 100; i++) + { + for (j = 1; j < 100; j += i) + for (k = 1; k < 100; k++) + a[j][k] = a[j+1][i-1] + 2; + + b[i] = b[i-1] + 2; + + for (j = 1; j < 100; j++) + a[j][i] = a[j+1][i-1] + 2; + + b[i] = b[i-1] + 2; + } + + return a[3][5] + b[1]; +} + +/* { dg-final { scan-tree-dump-times "number of SCoPs: 2" 1 "graphite"} } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
scop-20.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr38125.c =================================================================== --- pr38125.c (nonexistent) +++ pr38125.c (revision 338) @@ -0,0 +1,32 @@ +/* { dg-options "-O3 -fgraphite-identity" } */ + +typedef struct sv TEST_SV; +typedef struct av TEST_AV; +typedef struct magic TEST_MAGIC; +typedef struct xpvav TEST_XPVAV; +struct sv +{ + void* sv_any; +}; +struct av +{ + TEST_XPVAV* sv_any; +}; +struct xpvav +{ + char* xav_array; + long int xav_fill; + long int xav_max; +}; +struct magic { + TEST_SV* mg_obj; +}; +extern TEST_SV PL_sv_undef; +Perl_av_fill( register TEST_AV *av, int fill) +{ + TEST_MAGIC *mg; + int key = ((TEST_XPVAV*) (av)->sv_any)->xav_fill; + TEST_SV** ary = ((TEST_SV**)((TEST_XPVAV*) (av)->sv_any)->xav_array); + while (key < fill) + ary[++key] = &PL_sv_undef; +}
pr38125.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: scop-22.c =================================================================== --- scop-22.c (nonexistent) +++ scop-22.c (revision 338) @@ -0,0 +1,21 @@ +double u[1782225]; + +void foo(int N, int *res) +{ + int i; + double a, b; + double sum = 0.0; + + for (i = 0; i < N; i++) + { + a = u[i]; + u[i] = i * i; + b = u[i]; + sum += a + b; + } + + *res = sum + N; +} + +/* { dg-final { scan-tree-dump-times "number of SCoPs: 1" 1 "graphite"} } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
scop-22.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr42284.c =================================================================== --- pr42284.c (nonexistent) +++ pr42284.c (revision 338) @@ -0,0 +1,27 @@ +/* { dg-options "-O2 -fgraphite-identity" } */ + +int +huft_build (unsigned *b) +{ + int k; + for (k = 0; k <= 10; k++) + if (foo ()); +} +int +inflate_fixed () +{ + int i; + unsigned l[288]; + for (i = 0; i < 144; i++) + l[i] = 8; + for (; i < 256; i++) + l[i] = 9; + for (; i < 280; i++) + l[i] = 7; + for (; i < 288; i++) + l[i] = 8; + if ((i = huft_build (l)) != 0) + return i; + for (i = 0; i < 30; i++) + l[i] = 5; +}
pr42284.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr35356-1.c =================================================================== --- pr35356-1.c (nonexistent) +++ pr35356-1.c (revision 338) @@ -0,0 +1,26 @@ +/* { dg-options "-O2 -fgraphite-identity -fdump-tree-graphite-all" } */ + +int a[100]; + +int +foo (int bar, int n, int k) +{ + int i; + + for (i = 0; i < n; i++) + if (i == k) + a[i] = bar; + + return a[bar]; +} + +/* There should be no loops generated for this testcase, instead we + should generate the following: + + | if (k >= 0 && k < n) + | a[k] = bar; + +*/ + +/* { dg-final { scan-tree-dump-times "loop_1" 0 "graphite" } } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
pr35356-1.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: block-0.c =================================================================== --- block-0.c (nonexistent) +++ block-0.c (revision 338) @@ -0,0 +1,45 @@ +#define DEBUG 0 +#if DEBUG +#include +#endif + +#define N 1000 +int a[N]; + +static int __attribute__((noinline)) +foo (void) +{ + int j; + int i; + + for (i = 0; i < N; i++) + for (j = 0; j < N; j++) + a[j] = a[i] + 1; + + return a[0]; +} + +extern void abort (); + +int +main (void) +{ + int i, res; + + for (i = 0; i < N; i++) + a[i] = i; + + res = foo (); + +#if DEBUG + fprintf (stderr, "res = %d \n", res); +#endif + + if (res != 1999) + abort (); + + return 0; +} + +/* { dg-final { scan-tree-dump-times "will be loop blocked" 1 "graphite" { xfail *-*-* } } } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
block-0.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr35356-3.c =================================================================== --- pr35356-3.c (nonexistent) +++ pr35356-3.c (revision 338) @@ -0,0 +1,40 @@ +/* { dg-options "-O2 -fgraphite-identity -fdump-tree-graphite-all" } */ + + +int winner, numf2s; +double **tds; +double d, tsum; + +typedef struct { + double y; +} xyz; + +xyz *Y; +int ti; + +double +match (void) +{ + int tj, tresult; + + for (tj = 0; tj < numf2s; tj++) + if (tj == winner + && Y[tj].y > 0) + tsum += tds[ti][tj] * d; + + return tsum; +} + +/* There should be no loops generated for this testcase, instead we + should generate the following: + + | if (winner >= 0 && winner < numf2s && Y[winner].y > 0) + | tsum += tds[ti][winner] * d; + + For the moment this is XFAILed as this loop is not detected as a + SCoP by graphite: we depend on data in one of the conditions, + "Y[winner].y > 0". This could be fixed when we will use predicates + for such cases. */ + +/* { dg-final { scan-tree-dump-times "loop_1" 0 "graphite" { xfail *-*-* } } } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
pr35356-3.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr39335.c =================================================================== --- pr39335.c (nonexistent) +++ pr39335.c (revision 338) @@ -0,0 +1,20 @@ +/* { dg-options "-O2" } */ + +typedef unsigned char byte; +typedef struct gx_device_s gx_device; +typedef struct gs_devn_params_s gs_devn_params; +typedef struct gs_devn_params_s { + struct compressed_color_list_s * compressed_color_list; +} gs_devn_params_t; +int devn_unpack_row(gx_device * dev, int num_comp, + gs_devn_params * pdevn_params, int width, byte * in, + byte * out) +{ + int i, comp_num, pixel_num; + if (pdevn_params->compressed_color_list == ((void *)0)) + { + for (pixel_num = 0; pixel_num < width; pixel_num++) + for (i = 0; i < num_comp; i++) + *out++ = *in++; + } +}
pr39335.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr38084.c =================================================================== --- pr38084.c (nonexistent) +++ pr38084.c (revision 338) @@ -0,0 +1,31 @@ +/* { dg-options "-O3 -fgraphite-identity" } */ + +typedef struct { + unsigned int avail_out; + void *state; +} stream; + +typedef struct { + stream* test; + int num; +} state_in; + +int test_in ( stream *test, int action ) +{ + state_in* tst; + if (test == ((void *)0)) return (-2); + if (tst == ((void *)0)) return (-2); + if (tst->test != test) return (-2); + jump_here: + switch (tst->num) { + case 1: + return (-1); + case 2: + if (action == 0) { + } + if (action == 1) { + goto jump_here; + } + } + return 0; +}
pr38084.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: id-1.c =================================================================== --- id-1.c (nonexistent) +++ id-1.c (revision 338) @@ -0,0 +1,18 @@ +typedef int *lambda_vector; +typedef lambda_vector *lambda_matrix; +lambda_vector_add_mc (lambda_vector vec1, int const1, + lambda_vector vec2, int const2, + lambda_vector vec3, int size) +{ + int i; + for (i = 0; i < size; i++) + vec3[i] = const1 * vec1[i] + const2 * vec2[i]; +} +lambda_matrix_add_mc (lambda_matrix mat1, int const1, + lambda_matrix mat2, int const2, + lambda_matrix mat3, int m, int n) +{ + int i; + for (i = 0; i < m; i++) + lambda_vector_add_mc (mat1[i], const1, mat2[i], const2, mat3[i], n); +}
id-1.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr38446.c =================================================================== --- pr38446.c (nonexistent) +++ pr38446.c (revision 338) @@ -0,0 +1,14 @@ +/* { dg-options "-O2 -fgraphite-identity" } */ + +void copy_data() +{ + int ****source; + int ****dest; + + int i, j, k, l; + for (i = 0; i < 10; i++) + for (k = 0; k < 2; k++) + for (l = 0; l < 65; l++) + source[i][j][k][l] = dest[i][j][k][l]; +} +
pr38446.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: block-4.c =================================================================== --- block-4.c (nonexistent) +++ block-4.c (revision 338) @@ -0,0 +1,58 @@ +/* { dg-require-effective-target size32plus } */ + +#define DEBUG 0 +#if DEBUG +#include +#endif + +#define N 24 +#define M 1000 + +int A[M][M], B[M][M], C[M][M]; + +static int __attribute__((noinline)) +foo (void) +{ + int i, j, k; + + for (i = 0; i < 24; i++) + for (j = 0; j < 24; j++) + for (k = 0; k < 24; k++) + A[i][j] = B[i][k] * C[k][j]; + + for (i = 0; i < M; i++) + for (j = 0; j < M; j++) + for (k = 0; k < M; k++) + A[i][j] = B[i][k] * C[k][j]; + + return A[0][0] + A[M-1][M-1]; +} + +extern void abort (); + +int +main (void) +{ + int i, j, res; + + for (i = 0; i < M; i++) + for (j = 0; j < M; j++) + { + B[i][j] = i; + C[i][j] = j; + } + + res = foo (); + +#if DEBUG + fprintf (stderr, "res = %d \n", res); +#endif + + if (res != 998001) + abort (); + + return 0; +} + +/* { dg-final { scan-tree-dump-times "will be loop blocked" 1 "graphite" { xfail *-*-* } } } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
block-4.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: interchange-mvt.c =================================================================== --- interchange-mvt.c (nonexistent) +++ interchange-mvt.c (revision 338) @@ -0,0 +1,62 @@ +/* { dg-require-effective-target size32plus } */ + +#define DEBUG 0 +#if DEBUG +#include +#endif + +#define NMAX 2000 + +static int x1[NMAX], x2[NMAX], a[NMAX][NMAX], y1[NMAX], y2[NMAX]; + +static int __attribute__((noinline)) +mvt (long N) +{ + + int i,j; + + for (i = 0; i < N; i++) + for (j = 0; j < N; j++) + x1[i] = x1[i] + a[i][j] * y1[j]; + + for (i = 0; i < N; i++) + for (j = 0; j < N; j++) + x2[i] = x2[i] + a[j][i] * y2[j]; + + return x1[0] + x2[0]; +} + +extern void abort (); + +int +main (void) +{ + int i, j, res; + + for (i = 0; i < NMAX; i++) + for (j = 0; j < NMAX; j++) + a[i][j] = i + j; + + for (i = 0; i < NMAX; i++) + { + x1[i] = 0; + x2[i] = 2*i; + y1[i] = 100 - i; + y2[i] = i; + } + + res = mvt (NMAX); + +#if DEBUG + fprintf (stderr, "res = %d \n", res); +#endif + + if (res != 199900000) + abort (); + + return 0; +} + +/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" { xfail *-*-* } } } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */ +
interchange-mvt.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: id-3.c =================================================================== --- id-3.c (nonexistent) +++ id-3.c (revision 338) @@ -0,0 +1,11 @@ +struct { +} +mmaxloc0_4_i1 () +{ + int dstride; + int *dest; + int rank; + int n; + for (n = 0; n < rank; n++) + dest[n * dstride] = 0; +}
id-3.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: run-id-2.c =================================================================== --- run-id-2.c (nonexistent) +++ run-id-2.c (revision 338) @@ -0,0 +1,27 @@ +int a[1] = {1}; + +static int __attribute__((noinline)) +foo(int n) +{ + int i, c = 0; + for (i = 0; i < n; i++) + c += a[i]; + return c; +} + +int b[2] = {2, 3}; + +static int __attribute__((noinline)) bar(int n) +{ + int i, c = 0; + for (i = 0; i < n; i++) + c += b[i]; + return c; +} + +int main() +{ + return + foo(0) != 0 || foo(1) != 1 || bar(0) != 0 || bar(1) != 2 || bar(2) != 5; +} +
run-id-2.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: block-6.c =================================================================== --- block-6.c (nonexistent) +++ block-6.c (revision 338) @@ -0,0 +1,52 @@ +/* { dg-require-effective-target size32plus } */ + +#define DEBUG 0 +#if DEBUG +#include +#endif + +#define N 200 +int a[N][N]; + +static int __attribute__((noinline)) +foo (void) +{ + int i, j; + int res = 0; + + /* Interchange is not legal for loops 0 and 1. */ + for (i = 1; i < N; i++) + for (j = 1; j < N - 1; j++) + a[i][j] = a[i-1][j+1] * a[i-1][j+1] / 2; + + for (i = 0; i < N; i++) + res += a[i][i]; + + return res; +} + +extern void abort (); + +int +main (void) +{ + int i, j, res; + + for (i = 0; i < N; i++) + for (j = 0; j < N; j++) + a[i][j] = i + j; + + res = foo (); + +#if DEBUG + fprintf (stderr, "res = %d \n", res); +#endif + + if (res != 204007516) + abort (); + + return 0; +} + +/* { dg-final { scan-tree-dump-times "will be loop blocked" 0 "graphite" } } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
block-6.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: id-5.c =================================================================== --- id-5.c (nonexistent) +++ id-5.c (revision 338) @@ -0,0 +1,15 @@ +void matmul_i1 () +{ + int *abase; + int aystride; + int x, n, count, xcount; + int *dest_y; + int *abase_n; + for (n = 0; n < count; n++) + { + abase_n = abase + n * aystride; + for (x = 0; x < xcount; x++) + dest_y[x] += abase_n[x]; + } +} +
id-5.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: run-id-4.c =================================================================== --- run-id-4.c (nonexistent) +++ run-id-4.c (revision 338) @@ -0,0 +1,28 @@ +/* PR rtl-optimization/24899 */ + +extern void abort (void); + +__attribute__ ((noinline)) int +foo (int x, int y, int *z) +{ + int a, b, c, d; + + a = b = 0; + for (d = 0; d < y; d++) + { + if (z) + b = d * *z; + for (c = 0; c < x; c++) + a += b; + } + + return a; +} + +int +main (void) +{ + if (foo (3, 2, 0) != 0) + abort (); + return 0; +}
run-id-4.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: id-7.c =================================================================== --- id-7.c (nonexistent) +++ id-7.c (revision 338) @@ -0,0 +1,16 @@ +void foo (int *BM_tab) +{ + int *BM_tab_base; + + BM_tab_base = BM_tab; + BM_tab += 0400; + while (BM_tab_base != BM_tab) + *--BM_tab = 6; +} + +int main () +{ + int BM_tab[0400]; + foo (BM_tab); + return 0; +}
id-7.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr38786.c =================================================================== --- pr38786.c (nonexistent) +++ pr38786.c (revision 338) @@ -0,0 +1,20 @@ +/* { dg-options "-O2 -fgraphite-identity" } */ + +typedef struct +{ + int ****cofAC; +} ImageParameters; +typedef struct +{ + int ****cofAC; +} RD_DATA; +extern RD_DATA *rdopt; +extern ImageParameters *img; +dummy_slice_too_big (int bits_slice) +{ + int i, j, k, l; + for (j = 0; j < 4; j++) + for (k = 0; k < 2; k++) + for (l = 0; l < 65; l++) + img->cofAC[i][j][k][l] = rdopt->cofAC[i][j][k][l]; +}
pr38786.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: scop-1.c =================================================================== --- scop-1.c (nonexistent) +++ scop-1.c (revision 338) @@ -0,0 +1,31 @@ +void bar (void); + +int toto() +{ + int i, j, k; + int a[100][100]; + int b[100]; + + for (i = 1; i < 100; i++) + { + for (j = 1; j < 100; j++) + a[j][i] = a[j+1][i-1] + 2; + + b[i] = b[i-1] + 2; + + bar (); + + for (j = 1; j < 100; j++) + a[j][i] = a[j+1][i-1] + 2; + + b[i] = a[i-1][i] + 2; + + for (j = 1; j < 100; j++) + a[j][i] = a[j+1][i-1] + 2; + } + + return a[3][5] + b[1]; +} + +/* { dg-final { scan-tree-dump-times "number of SCoPs: 3" 1 "graphite"} } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
scop-1.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: id-9.c =================================================================== --- id-9.c (nonexistent) +++ id-9.c (revision 338) @@ -0,0 +1,26 @@ +typedef enum +{ + no_op, + jump +} +re_opcode_t; +struct +{ +} +byte_register_info_type () +{ + char *p; + for (;;) + switch ((re_opcode_t) p++) + { + case no_op: + { + for (; (p);) + ; + for (;;) + ; + } + case jump: + (p) += 2; + } +}
id-9.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: scop-3.c =================================================================== --- scop-3.c (nonexistent) +++ scop-3.c (revision 338) @@ -0,0 +1,28 @@ +int toto() +{ + int i, j, k; + int a[100][100]; + int b[100]; + + for (i = 1; i < 100; i++) + { + for (j = 1; j < 80; j++) + a[j][i] = a[j+1][2*i-1*j] + 12; + + b[i] = b[i-1] + 10; + + for (j = 1; j < 60; j++) + a[j][i] = a[j+1][i-1] + 8; + + if (i == 23) + b[i] = a[i-1][i] + 6; + + for (j = 1; j < 40; j++) + a[j][i] = a[j+1][i-1] + 4; + } + + return a[3][5] + b[1]; +} + +/* { dg-final { scan-tree-dump-times "number of SCoPs: 1" 1 "graphite"} } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
scop-3.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: interchange-10.c =================================================================== --- interchange-10.c (nonexistent) +++ interchange-10.c (revision 338) @@ -0,0 +1,50 @@ +/* { dg-require-effective-target size32plus } */ + +#define DEBUG 0 +#if DEBUG +#include +#endif + +double u[1782225]; + +static void __attribute__((noinline)) +foo (int N, int *res) +{ + int i, j; + double sum = 0.0; + + for (i = 0; i < N; i++) + for (j = 0; j < N; j++) + sum = sum + u[i + 1335 * j]; + + for (i = 0; i < N; i++) + for (j = 0; j < N; j++) + sum = sum + u[i + 1335 * j]; + + *res = sum + N + u[1336 * 2] + u[1336]; +} + +extern void abort (); + +int +main (void) +{ + int i, res; + + for (i = 0; i < 1782225; i++) + u[i] = 2; + + foo (1335, &res); + +#if DEBUG + fprintf (stderr, "res = %d \n", res); +#endif + + if (res != 7130239) + abort (); + + return 0; +} + +/* { dg-final { scan-tree-dump-times "will be interchanged" 2 "graphite" } } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
interchange-10.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: scop-sor.c =================================================================== --- scop-sor.c (nonexistent) +++ scop-sor.c (revision 338) @@ -0,0 +1,18 @@ +#define SIZE 10000 + +static double P[SIZE][SIZE]; + +void sor(int N1, int N2){ + int i, j, k; + +#pragma scop + for(i=1; i
scop-sor.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: scop-5.c =================================================================== --- scop-5.c (nonexistent) +++ scop-5.c (revision 338) @@ -0,0 +1,35 @@ +void bar (); + +int toto() +{ + int i,j, b; + int a[100]; + + if (i == 20) + { + for (j = 0; j <= 20; j++) + a[j] = b + i; + b = 3; + bar(); + } + else + { + if (i == 30) + { + for (j = 0; j <= 20; j++) + a[j] = b + i; + b = 5; + } + else + { + for (j = 0; j <= 20; j++) + a[j] = b + i; + b = 8; + } + } + + return a[b]; +} + +/* { dg-final { scan-tree-dump-times "number of SCoPs: 3" 1 "graphite"} } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
scop-5.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: interchange-12.c =================================================================== --- interchange-12.c (nonexistent) +++ interchange-12.c (revision 338) @@ -0,0 +1,56 @@ +/* { dg-require-effective-target size32plus } */ + +#define DEBUG 0 +#if DEBUG +#include +#endif + +#define N 200 + +int A[N][N], B[N][N], C[N][N]; + +static int __attribute__((noinline)) +matmult (void) +{ + int i, j, k; + + for (i = 0; i < N; i++) + for (j = 0; j < N; j++) + { + A[i][j] = 0; + for (k = 0; k < N; k++) + A[i][j] += B[i][k] * C[k][j]; + } + + return A[0][0] + A[N-1][N-1]; +} + +extern void abort (); + +int +main (void) +{ + int i, j, res; + + for (i = 0; i < N; i++) + for (j = 0; j < N; j++) + { + A[i][j] = 0; + B[i][j] = i - j; + C[i][j] = i + j; + } + + res = matmult (); + +#if DEBUG + fprintf (stderr, "res = %d \n", res); +#endif + + if (res != 2626800) + abort (); + + return 0; +} + +/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" { xfail *-*-* } } } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
interchange-12.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: scop-7.c =================================================================== --- scop-7.c (nonexistent) +++ scop-7.c (revision 338) @@ -0,0 +1,31 @@ +void bar (void); + +int toto() +{ + int i, j, k; + int a[100][100]; + int b[100]; + + for (i = 1; i < 100; i++) + { + for (j = 1; j < 100; j++) + b[i+j] = b[i+j-1] + 2; + + if (i * 2 == i + 8) + { + bar (); + for (j = 1; j < 100; j++) + b[i+j] = b[i+j-1] + 2; + } + else + a[i][i] = 2; + + for (k = 1; k < 100; k++) + b[i+k] = b[i+k-5] + 2; + } + + return a[3][5] + b[1]; +} + +/* { dg-final { scan-tree-dump-times "number of SCoPs: 3" 1 "graphite"} } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
scop-7.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: id-10.c =================================================================== --- id-10.c (nonexistent) +++ id-10.c (revision 338) @@ -0,0 +1,15 @@ +int bar[100][100]; + +int +foo (int N, unsigned int J) +{ + int i, k; + + for (k = 0; k < N; k++) + if (k != J) + for (i = 0; i < N; i++) + if (i != J) + bar[k][i] = 20; + + return bar[N][J]; +}
id-10.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: scop-9.c =================================================================== --- scop-9.c (nonexistent) +++ scop-9.c (revision 338) @@ -0,0 +1,27 @@ +void bar (void); + +int toto() +{ + int i, j, k; + int a[100][100]; + int b[100]; + + for (i = 1; i < 100; i++) + { + for (j = 1; j < 100; j++) + b[i+j] = b[i+j-1] + 2; + + if (i * 2 == i + 8) + bar (); + else + a[i][i] = 2; + + for (k = 1; k < 100; k++) + b[i+k] = b[i+k-5] + 2; + } + + return a[3][5] + b[1]; +} + +/* { dg-final { scan-tree-dump-times "number of SCoPs: 2" 1 "graphite"} } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
scop-9.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr42211.c =================================================================== --- pr42211.c (nonexistent) +++ pr42211.c (revision 338) @@ -0,0 +1,22 @@ +/* { dg-options "-O3 -floop-interchange" } */ + +typedef unsigned char uint8_t; + +void border_mirror(uint8_t *outer_img, int w, int h, int rb, int border) +{ + uint8_t *img = outer_img + border * rb + border; + int x, y; + + for (y = -border; y < 0; y++) { + for (x = -border; x < 0; x++) + img[y*rb + x] = img[(-y)*rb + (-x)]; + + for (x = 0; x < w; x++) + img[y*rb + x] = img[(-y)*rb + x]; + } +} + +void border_mirror_480(uint8_t *outer_img) +{ + border_mirror(outer_img, 640, 480, 640 + 16*2, 16); +}
pr42211.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: id-12.c =================================================================== --- id-12.c (nonexistent) +++ id-12.c (revision 338) @@ -0,0 +1,10 @@ +void +foo (unsigned short x[]) +{ + int i; + unsigned short *p = &x[2]; + if (*p) + x += 2; + for (i = 2; i < 9; i++, ++x) + *x >>= 8; +}
id-12.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: graphite.exp =================================================================== --- graphite.exp (nonexistent) +++ graphite.exp (revision 338) @@ -0,0 +1,71 @@ +# Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING3. If not see +# . + +# GCC testsuite that uses the `dg.exp' driver. + +# Load support procs. +load_lib gcc-dg.exp + +if ![check_effective_target_fgraphite] { + return +} + +# Remove VALUE from LIST_VARIABLE. +proc lremove {list_variable value} { + upvar 1 $list_variable var + set idx [lsearch -exact $var $value] + set var [lreplace $var $idx $idx] +} + +# The default action for a test is 'compile'. Save current default. +global dg-do-what-default +set save-dg-do-what-default ${dg-do-what-default} + +# Initialize `dg'. +dg-init + +set wait_to_run_files [lsort [glob -nocomplain $srcdir/$subdir/*.c ] ] +set scop_files [lsort [glob -nocomplain $srcdir/$subdir/scop-*.c ] ] +set id_files [lsort [glob -nocomplain $srcdir/$subdir/id-*.c ] ] +set run_id_files [lsort [glob -nocomplain $srcdir/$subdir/run-id-*.c ] ] +set interchange_files [lsort [glob -nocomplain $srcdir/$subdir/interchange-*.c ] ] +set block_files [lsort [glob -nocomplain $srcdir/$subdir/block-*.c ] ] + +# Tests to be compiled. +set dg-do-what-default compile +dg-runtest $scop_files "" "-O2 -fgraphite -fdump-tree-graphite-all" +dg-runtest $id_files "" "-O2 -fgraphite-identity -ffast-math" + +# Tests to be run. +set dg-do-what-default run +dg-runtest $run_id_files "" "-O2 -fgraphite-identity" +dg-runtest $interchange_files "" "-O2 -floop-interchange -fno-loop-block -fno-loop-strip-mine -ffast-math -fdump-tree-graphite-all" +dg-runtest $block_files "" "-O2 -floop-block -fno-loop-strip-mine -fno-loop-interchange -ffast-math -fdump-tree-graphite-all" + +# The default action for the rest of the files is 'compile'. +set dg-do-what-default compile +foreach f $scop_files {lremove wait_to_run_files $f} +foreach f $id_files {lremove wait_to_run_files $f} +foreach f $run_id_files {lremove wait_to_run_files $f} +foreach f $interchange_files {lremove wait_to_run_files $f} +foreach f $block_files {lremove wait_to_run_files $f} +dg-runtest $wait_to_run_files "" "-ansi -pedantic-errors" + +# Clean up. +set dg-do-what-default ${save-dg-do-what-default} + +# All done. +dg-finish Index: id-14.c =================================================================== --- id-14.c (nonexistent) +++ id-14.c (revision 338) @@ -0,0 +1,19 @@ +typedef struct { + int n; + float *a; +} bar; + +float +foo (bar *b) +{ + float c, d; + int j; + + for (j = 0; (j < b->n); j++) + d += b->a[j]; + + for (j = 0; (j < b->n); j++) + c += b->a[j]; + + return d; +}
id-14.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: id-pr43464-1.c =================================================================== --- id-pr43464-1.c (nonexistent) +++ id-pr43464-1.c (revision 338) @@ -0,0 +1,18 @@ +typedef struct regnode +{ + char flags; +} regnode; +extern const unsigned char A[]; + +char *foo (regnode *c, char *s, int norun) +{ + int uskip; + while (s + (uskip = A[*s])) + { + if ((c->flags || bar (c)) && norun) + goto got_it; + s += uskip; + } + got_it: + return s; +}
id-pr43464-1.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr42530.c =================================================================== --- pr42530.c (nonexistent) +++ pr42530.c (revision 338) @@ -0,0 +1,18 @@ +/* { dg-options "-O2 -g -ffast-math -floop-parallelize-all" } */ + +int array[2][2]; + +void foo(int *a) +{ + int i, j; + int sum, tmp = 0; + + for (i=0; i<2; i++) + for (j=0; j<2; j++) + sum += array[i][j]; + + if (sum > 0) { + tmp = sum; + *a = tmp; + } +}
pr42530.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: id-16.c =================================================================== --- id-16.c (nonexistent) +++ id-16.c (revision 338) @@ -0,0 +1,44 @@ +int transformation[(2*19 - 1) * (2*19 - 1)][8]; + +const int transformation2[8][2][2] = { + {{1, 0}, {0, 1}}, + {{0, 1}, {-1, 0}}, + {{-1, 0}, {0, -1}}, + {{0, -1}, {1, 0}}, + {{0, -1}, {-1, 0}}, + {{-1, 0}, {0, 1}}, + {{0, 1}, {1, 0}}, + {{1, 0}, {0, -1}} +}; + +void +transformation_init (void) +{ + int k; + int dx; + int dy; + + for (k = 0; k < 8; k++) + { + for (dy = -19 + 1; dy <= 19 - 1; dy++) + { + for (dx = -19 + 1; dx <= 19 - 1; dx++) + { + int tx; + int ty; + do + { + *&tx = + transformation2[k][0][0] * (dx) + + transformation2[k][0][1] * (dy); + *&ty = + transformation2[k][1][0] * (dx) + + transformation2[k][1][1] * (dy); + } + while (0); + transformation[((dy + 19 - 1) * (2 * 19 - 1) + + (dx + 19 - 1))][k] = ((tx) * (19 + 1) + (ty)); + } + } + } +}
id-16.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: scop-dsyr2k.c =================================================================== --- scop-dsyr2k.c (nonexistent) +++ scop-dsyr2k.c (revision 338) @@ -0,0 +1,21 @@ +#define NMAX 3000 + +static double a[NMAX][NMAX], b[NMAX][NMAX], c[NMAX][NMAX]; + +void dsyr2k(long N) { + int i,j,k; + +#pragma scop + for (i=0; i
scop-dsyr2k.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr43306.c =================================================================== --- pr43306.c (nonexistent) +++ pr43306.c (revision 338) @@ -0,0 +1,9 @@ +/* { dg-options "-O1 -fstrict-overflow -fgraphite-identity" } */ + +void foo(int x[]) +{ + int i, j; + for (i = 0; i < 2; i++) + for (j = 0; j < 2; j++) + x[i] = x[i*j]; +}
pr43306.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: id-18.c =================================================================== --- id-18.c (nonexistent) +++ id-18.c (revision 338) @@ -0,0 +1,7 @@ +long do_hash (const char * lo, const char * hi) +{ + int val = 0; + for (; lo < hi; ++lo) + val = *lo; + return val; +}
id-18.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: scop-10.c =================================================================== --- scop-10.c (nonexistent) +++ scop-10.c (revision 338) @@ -0,0 +1,31 @@ +void bar (void); + +int toto() +{ + int i, j, k; + int a[100][100]; + int b[100]; + + for (i = 1; i < 100; i++) + { + for (j = 1; j < 100; j++) + b[i+j] = b[i+j-1] + 2; + + if (i * 2 == i + 8) + bar (); + else + { + for (j = 1; j < 100; j++) + b[i+j] = b[i+j-1] + 2; + a[i][i] = 2; + } + + for (k = 1; k < 100; k++) + b[i+k] = b[i+k-5] + 2; + } + + return a[3][5] + b[1]; +} + +/* { dg-final { scan-tree-dump-times "number of SCoPs: 3" 1 "graphite"} } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
scop-10.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr38413.c =================================================================== --- pr38413.c (nonexistent) +++ pr38413.c (revision 338) @@ -0,0 +1,14 @@ +/* { dg-options "-O2 -fgraphite-identity" } */ + +static int qsz; + +void specqsort(base, n, size, compar) + char *base; +{ + register char c, *i, *j, *lo, *hi; + qsz = size; + for (i = base, hi = base + qsz; i < hi; ) + { + *i++ = c; + } +}
pr38413.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: scop-12.c =================================================================== --- scop-12.c (nonexistent) +++ scop-12.c (revision 338) @@ -0,0 +1,36 @@ +void bar (); + +int toto() +{ + int i,j, b; + int a[100]; + + switch (i) + { + + case 5: + for (j = 0; j <= 20; j++) + a[j] = b + i + 12; + break; + case 8: + for (j = 0; j <= 20; j++) + a[j] = b + i + 122; + break; + case 15: + for (j = 0; j <= 20; j++) + a[j] = b + i + 12; + break; + case 18: + for (j = 0; j <= 20; j++) + a[j] = b + i + 4; + break; + default: + for (j = 0; j <= 20; j++) + a[j] = b + i + 3; + } + + return a[b]; +} + +/* { dg-final { scan-tree-dump-times "number of SCoPs: 5" 1 "graphite"} } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
scop-12.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: interchange-1.c =================================================================== --- interchange-1.c (nonexistent) +++ interchange-1.c (revision 338) @@ -0,0 +1,53 @@ +/* { dg-require-effective-target size32plus } */ + +/* Formerly known as ltrans-1.c */ + +#define DEBUG 0 +#if DEBUG +#include +#endif + +double u[1782225]; + +static int __attribute__((noinline)) +foo (int N) +{ + int i, j; + double sum = 0.0; + + for (i = 0; i < N; i++) + { + for (j = 0; j < N; j++) + sum = sum + u[i + 1335 * j]; + + u[1336 * i] *= 2; + } + + return sum + N + u[1336 * 2] + u[1336]; +} + +extern void abort (); + +int +main (void) +{ + int i, j, res; + + for (i = 0; i < 1782225; i++) + u[i] = 2; + + res = foo (1335); + +#if DEBUG + fprintf (stderr, "res = %d \n", res); +#endif + + if (res != 3565793) + abort (); + + return 0; +} + + +/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" { xfail *-*-* } } } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
interchange-1.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: scop-matmult.c =================================================================== --- scop-matmult.c (nonexistent) +++ scop-matmult.c (revision 338) @@ -0,0 +1,20 @@ +/* { dg-require-effective-target size32plus } */ + +float A[1000][1000], B[1000][1000], C[1000][1000]; + +/* Multiply two n x n matrices A and B and store the result in C. */ + +void matmult (int n) +{ + int i,j,k; + + for (i = 0; i < n; i++) + for (j = 0; j < n; j++) + for (k = 0; k < n; k++) + A[i][j] += B[i][k] * C[k][j]; +} + +/* This one fails because the number of iterations cannot be + determined anymore for the outermost loop. */ +/* { dg-final { scan-tree-dump-times "number of SCoPs: 1" 1 "graphite" } } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
scop-matmult.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: scop-14.c =================================================================== --- scop-14.c (nonexistent) +++ scop-14.c (revision 338) @@ -0,0 +1,25 @@ +void bar (); + +int toto() +{ + int i,j, b; + int a[100]; + + for (j = 0; j <= 20; j++) + { + a[j] = b + i; + + if (j * i == b) + break; + + a[j+b] = b + i; + } + + a[i] = b + 3; + + + return a[b]; +} + +/* { dg-final { scan-tree-dump-times "number of SCoPs: 0" 1 "graphite"} } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
scop-14.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: interchange-3.c =================================================================== --- interchange-3.c (nonexistent) +++ interchange-3.c (revision 338) @@ -0,0 +1,51 @@ +/* { dg-require-effective-target size32plus } */ + +/* Formerly known as ltrans-3.c */ + +#define DEBUG 0 +#if DEBUG +#include +#endif + +double u[1782225]; + +static void __attribute__((noinline)) +foo (int N, int *res) +{ + unsigned int i, j; + double sum = 0; + for (i = 0; i < N; i++) + { + for (j = 0; j < N; j++) + { + sum = sum + u[i + 1335 * j]; + } + } + + *res = sum + N + u[1336 * 2] + u[1336]; +} + +extern void abort (); + +int +main (void) +{ + int i, j, res; + + for (i = 0; i < 1782225; i++) + u[i] = 2; + + foo (1335, &res); + +#if DEBUG + fprintf (stderr, "res = %d \n", res); +#endif + + if (res != 3565789) + abort (); + + return 0; +} + +/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
interchange-3.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: scop-16.c =================================================================== --- scop-16.c (nonexistent) +++ scop-16.c (revision 338) @@ -0,0 +1,25 @@ +/* { dg-require-effective-target size32plus } */ + +#define N 10000 +void foo (int); +int test () +{ + int a[N][N]; + int b[N][N]; + unsigned i, j; + + for (i = 0; i < N; i++) + for (j = 0; j < N; j++) + a[i][j] = i*j; + + for (j = 1; j < N; j++) + for (i = 0; i < N; i++) + a[i][j] = a[i][j-1] + b[i][j]; + + for (i = 0; i < N; i++) + for (j = 0; j < N; j++) + foo (a[i][j]); +} + +/* { dg-final { scan-tree-dump-times "number of SCoPs: 2" 1 "graphite"} } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
scop-16.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: interchange-5.c =================================================================== --- interchange-5.c (nonexistent) +++ interchange-5.c (revision 338) @@ -0,0 +1,50 @@ +/* { dg-require-effective-target size32plus } */ + +/* Formerly known as ltrans-5.c */ + +#define DEBUG 0 +#if DEBUG +#include +#endif + +#define N 100 +#define M 1111 +int A[N][M]; + +static int __attribute__((noinline)) +foo (void) +{ + int i, j; + + for( i = 0; i < M; i++) + for( j = 0; j < N; j++) + A[j][i] = 5 * A[j][i]; + + return A[0][0] + A[N-1][M-1]; +} + +extern void abort (); + +int +main (void) +{ + int i, j, res; + + for (i = 0; i < N; i++) + for (j = 0; j < M; j++) + A[i][j] = 2; + + res = foo (); + +#if DEBUG + fprintf (stderr, "res = %d \n", res); +#endif + + if (res != 20) + abort (); + + return 0; +} + +/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
interchange-5.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: scop-18.c =================================================================== --- scop-18.c (nonexistent) +++ scop-18.c (revision 338) @@ -0,0 +1,26 @@ +/* { dg-require-effective-target size32plus } */ + +#define N 24 +#define M 1000 + +float A[1000][1000], B[1000][1000], C[1000][1000]; + +void test (void) +{ + int i, j, k; + + /* These loops contain too few iterations for being strip-mined by 64. */ + for (i = 0; i < 24; i++) + for (j = 0; j < 24; j++) + for (k = 0; k < 24; k++) + A[i][j] = B[i][k] * C[k][j]; + + /* These loops should still be strip mined. */ + for (i = 0; i < 1000; i++) + for (j = 0; j < 1000; j++) + for (k = 0; k < 1000; k++) + A[i][j] = B[i][k] * C[k][j]; +} + +/* { dg-final { scan-tree-dump-times "number of SCoPs: 2" 1 "graphite"} } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
scop-18.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr37943.c =================================================================== --- pr37943.c (nonexistent) +++ pr37943.c (revision 338) @@ -0,0 +1,33 @@ +/* { dg-options "-O3 -fgraphite-identity -fdump-tree-graphite-all" } */ + +typedef struct +{ + int mode,state,num,state_out; + unsigned char* bits; + char *out; +}test; +unsigned char copy( test* s ) +{ + while(1) + { + if (s->mode == 0) break; + if (s->state_out >= s->num) break; + *(s->out) = s->bits[s->state_out]; + if (s->mode == 0) s->mode++; + } +} +unsigned char compress(test *in) +{ + unsigned char p_in, p_out; + while(1) + { + if (in->state == 1) + { + p_out |= copy(in); + if (in->state_out < in->num) break; + } + } + return p_in || p_out; +} +/* { dg-final { cleanup-tree-dump "graphite" } } */ +
pr37943.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: interchange-7.c =================================================================== --- interchange-7.c (nonexistent) +++ interchange-7.c (revision 338) @@ -0,0 +1,50 @@ +/* { dg-require-effective-target size32plus } */ + +/* Formerly known as ltrans-8.c */ + +#define DEBUG 0 +#if DEBUG +#include +#endif + +#define N 111 +#define M 1111 + +static int __attribute__((noinline)) +foo (double *a) +{ + int i,j; + int r = 0; + + for (i = 0; i < N; ++i) + for (j = 0; j < M; ++j) + r += a[j * N + i]; + + return r; +} + +extern void abort (); + +int +main (void) +{ + double A[N*M]; + int i, res; + + for (i = 0; i < N*M; i++) + A[i] = 2; + + res = foo (A); + +#if DEBUG + fprintf (stderr, "res = %d \n", res); +#endif + + if (res != 246642) + abort (); + + return 0; +} + +/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
interchange-7.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr37485.c =================================================================== --- pr37485.c (nonexistent) +++ pr37485.c (revision 338) @@ -0,0 +1,32 @@ +/* { dg-options "-O2 -fdump-tree-graphite-all" } */ + +typedef unsigned char UChar; +typedef int Int32; +typedef unsigned int UInt32; + +void fallbackSort ( UInt32* fmap, + UInt32* eclass, + Int32 nblock, + Int32 verb ) +{ + Int32 ftab[257]; + Int32 ftabCopy[256]; + Int32 H, i, j, k, l, r, cc, cc1; + Int32 nNotDone; + Int32 nBhtab; + UChar* eclass8 = (UChar*)eclass; + + if (verb >= 4) + VPrintf0 ( " bucket sorting ...\n" ); + for (i = 0; i < 257; i++) ftab[i] = 0; + for (i = 0; i < nblock; i++) ftab[eclass8[i]]++; + for (i = 0; i < 256; i++) ftabCopy[i] = ftab[i]; + for (i = 1; i < 257; i++) ftab[i] += ftab[i-1]; + + for (i = 0; i < nblock; i++) { + j = eclass8[i] + ftab [i]; + } + AssertH ( j < 256, 1005 ); +} +/* { dg-final { scan-tree-dump-times "Loop blocked" 1 "graphite" { xfail *-*-* }} } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
pr37485.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr37828.c =================================================================== --- pr37828.c (nonexistent) +++ pr37828.c (revision 338) @@ -0,0 +1,25 @@ +/* { dg-options "-O2" } */ + +typedef struct foo +{ + struct foo **Node; +} foo; + +static int sort_and_split (foo **Root, foo **Finite, long first) +{ + foo *cd; + long i; + for (i = 0; i < first; i++) + cd->Node[i] = Finite[first+i]; + + sort_and_split(Root, Finite, first); + return (0); +} + + +void Build_foo(foo **Root, foo **Finite, foo **Infinite) +{ + long low, high; + while (sort_and_split(Root, Finite, low) == 0); +} +
pr37828.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: interchange-9.c =================================================================== --- interchange-9.c (nonexistent) +++ interchange-9.c (revision 338) @@ -0,0 +1,48 @@ +/* { dg-require-effective-target size32plus } */ + +#define DEBUG 0 +#if DEBUG +#include +#endif + +#define N 1111 +#define M 1111 + +static int __attribute__((noinline)) +foo (int *x) +{ + int i, j; + int sum = 0; + + for (j = 0; j < M; ++j) + for (i = 0; i < N; ++i) + sum += x[M * i + j]; + + return sum; +} + +extern void abort (); + +int +main (void) +{ + int A[N*M]; + int i, res; + + for (i = 0; i < N*M; i++) + A[i] = 2; + + res = foo (A); + +#if DEBUG + fprintf (stderr, "res = %d \n", res); +#endif + + if (res != 2468642) + abort (); + + return 0; +} + +/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
interchange-9.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr37928.c =================================================================== --- pr37928.c (nonexistent) +++ pr37928.c (revision 338) @@ -0,0 +1,33 @@ +/* { dg-options "-O3" } */ + +int get_state(int size, int *node, int *hash) +{ + int i=0; + while(hash[i]) + { + if(node[hash[i]] == 0) + return hash[i]-1; + i++; + if(i==5) + i=0; + } + return -1; +} + +void foo (int); + +int gate1(int size, int *node, int *hash) +{ + int i, j ; + int add_size=0; + for(i=0; i
pr37928.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr37883.c =================================================================== --- pr37883.c (nonexistent) +++ pr37883.c (revision 338) @@ -0,0 +1,11 @@ +/* { dg-options "-O3" } */ + +void test_sort() +{ + char *base; + register char c, *i, *hi; + + for (i = base; i < hi; i++) + *i++ = c; +} +
pr37883.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: scop-dsyrk.c =================================================================== --- scop-dsyrk.c (nonexistent) +++ scop-dsyrk.c (revision 338) @@ -0,0 +1,22 @@ +#define NMAX 3000 +#define MEASURE_TIME 1 + +static double a[NMAX][NMAX], c[NMAX][NMAX]; + +void dsyrk(long N) +{ + int i,j,k; + +#pragma scop + for (i=0; i
scop-dsyrk.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr38559.c =================================================================== --- pr38559.c (nonexistent) +++ pr38559.c (revision 338) @@ -0,0 +1,14 @@ +/* { dg-options "-O2" } */ + +int test() +{ + int offset, len; + register char *mid; + register char *midend; + register char *bigend; + long unsigned int curlen; + if (offset + len > curlen) { + while (midend > mid) + *--bigend = *--midend; + } +}
pr38559.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr39335_1.c =================================================================== --- pr39335_1.c (nonexistent) +++ pr39335_1.c (revision 338) @@ -0,0 +1,9 @@ +/* { dg-options "-O2" } */ + +void crash_me(int num1, int num2, char * in, char * out) +{ + int i, j; + for (j = 0; j < num1; j++) + for (i = 0; i < num2; i++) + *out++ = *in++; +}
pr39335_1.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: scop-mvt.c =================================================================== --- scop-mvt.c (nonexistent) +++ scop-mvt.c (revision 338) @@ -0,0 +1,24 @@ +#define NMAX 2000 + +static double x1[NMAX], x2[NMAX], a[NMAX][NMAX], y_1[NMAX], y_2[NMAX]; + +void mvt(long N) { + + int i,j; + + for (i=0; i
scop-mvt.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: id-pr43351.c =================================================================== --- id-pr43351.c (nonexistent) +++ id-pr43351.c (revision 338) @@ -0,0 +1,5 @@ +int foo(int i) +{ + if (i < 0) return 0; + for (; i < 10; i++); +}
id-pr43351.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr42205-2.c =================================================================== --- pr42205-2.c (nonexistent) +++ pr42205-2.c (revision 338) @@ -0,0 +1,11 @@ +/* { dg-options "-O1 -funsafe-math-optimizations -floop-interchange" } */ + +double f(double x) +{ + double y = 0.0; + int i; + for (i = 0; i < 8; i++) { + y += x * i; + } + return y; +}
pr42205-2.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: run-id-pr42644.c =================================================================== --- run-id-pr42644.c (nonexistent) +++ run-id-pr42644.c (revision 338) @@ -0,0 +1,32 @@ +/* Testcase extracted from test 183.equake in SPEC CPU2000. */ +double Ke[2], ds[2]; + +void foo(double Ke[2], int i, double ds[], int column) +{ + double tt, ts; + int j; + + for (j = 0; j < 2; j++) + { + ++column; + ts = ds[i]; + if (i == j) + tt = 123; + else + tt = 0; + Ke[column] = Ke[column] + ts + tt; + } +} + +int +main () +{ + int i, j; + + ds[0] = 1.0; + ds[1] = 1.0; + + foo(Ke, 0, ds, -1); + + return (int) Ke[0] != 124; +}
run-id-pr42644.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr42326.c =================================================================== --- pr42326.c (nonexistent) +++ pr42326.c (revision 338) @@ -0,0 +1,20 @@ +/* { dg-options "-O1 -floop-parallelize-all" } */ + +double lagrange(const double x[], + const double y[], + long n, + double xval) +{ + long i, j; + double yval = 0.; + + for( i=0; i < n; i++ ) + { + double l = 1.; + for( j=0; j < n; j++ ) + if( i != j ) + l *= (xval-x[j])/(x[i]-x[j]); + yval += y[i]*l; + } + return yval; +}
pr42326.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: scop-21.c =================================================================== --- scop-21.c (nonexistent) +++ scop-21.c (revision 338) @@ -0,0 +1,31 @@ +#define N 10000 +void foo (int); +int test () +{ + int a[N]; + unsigned i; + + for (i = 0; i < N; i++) + { + a[i] = i + 12; + + if (i == 40) + a[i] = i; + else + a[i] = i+1; + + + a[i] = i + 12; + a[i] = a[i+1]; + a[i] += a[i+2]; + a[i] += a[i+3]; + a[i] += a[i+4]; + a[i] += a[i+5]; + a[i] += a[i+6]; + + } + + return a[20]; +} +/* { dg-final { scan-tree-dump-times "number of SCoPs: 1" 1 "graphite"} } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
scop-21.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr35356-2.c =================================================================== --- pr35356-2.c (nonexistent) +++ pr35356-2.c (revision 338) @@ -0,0 +1,44 @@ +/* { dg-options "-O2 -fgraphite-identity -fdump-tree-graphite-all" } */ + +int a[100]; + +int +foo (int bar, int n, int k) +{ + int i; + + for (i = 0; i < n; i++) + if (i == k) + a[i] = 1; + else + a[i] = i; + + return a[bar]; +} + +/* We should generate the following: + + | for (i = 0; i < min (n, k); i++) + | a[i] = i; + | if (k >= 0 && k < n) + | a[k] = 1; + | for (i = max(k+1,0); i < n; i++) + | a[i] = i; + + XXX: At the moment we generate to protect loops that are executed zero times. + + | if (0 < min (n, k) + 1) + | for (i = 0; i < min (n, k); i++) + | a[i] = i; + | if (k >= 0 && k < n) + | a[k] = 1; + | if (0 < max(n, k) + 1) + | for (i = max(k+1,0); i < n; i++) + | a[i] = i; + +*/ + + +/* { dg-final { scan-tree-dump-times "MIN_EXPR" 2 "graphite" } } */ +/* { dg-final { scan-tree-dump-times "MAX_EXPR" 2 "graphite" } } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
pr35356-2.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: block-1.c =================================================================== --- block-1.c (nonexistent) +++ block-1.c (revision 338) @@ -0,0 +1,46 @@ +/* { dg-require-effective-target size32plus } */ + +#define DEBUG 0 +#if DEBUG +#include +#endif + +#define MAX 100 + +extern void abort (); + +int +main (void) +{ + int i, j; + int sum = 0; + int A[MAX * MAX]; + int B[MAX * MAX]; + + for (i = 0; i < MAX; i++) + for (j = 0; j < MAX; j++) + { + A[i*MAX + j] = j; + B[i*MAX + j] = j; + } + + for (i = 0; i < MAX; i++) + for (j = 0; j < MAX; j++) + A[i*MAX + j] += B[j*MAX + i]; + + for(i = 0; i < MAX; i++) + for(j = 0; j < MAX; j++) + sum += A[i*MAX + j]; + +#if DEBUG + fprintf (stderr, "sum = %d \n", sum); +#endif + + if (sum != 990000) + abort (); + + return 0; +} + +/* { dg-final { scan-tree-dump-times "will be loop blocked" 2 "graphite" { xfail *-*-* } } } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
block-1.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: pr38409.c =================================================================== --- pr38409.c (nonexistent) +++ pr38409.c (revision 338) @@ -0,0 +1,24 @@ +/* { dg-options "-O2" } */ + +typedef struct test input ; +struct test +{ + int type ; + int symflag ; +}; +Chv_copyEntriesToVector ( input *chv,double *dvec) +{ + double *entries ; + int mm, nent; + int first, i, k , stride ; + if ( ((chv)->type == 1) ) + { + for ( i = 0 ; i < 10 ; i++) + { + dvec[2*mm] = entries[2*k] ; + k += stride ; + stride -= 2 ; + } + } + return(mm) ; +}
pr38409.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: block-3.c =================================================================== --- block-3.c (nonexistent) +++ block-3.c (revision 338) @@ -0,0 +1,61 @@ +/* { dg-require-effective-target size32plus } */ +/* { dg-timeout-factor 4.0 } */ + +#define DEBUG 0 +#if DEBUG +#include +#endif + +#define N 24 +#define M 100 + +int A[M][M][M], B[M][M], C[M][M]; + +static int __attribute__((noinline)) +foo (void) +{ + int i, j, k; + + /* These loops contain too few iterations to be blocked by 64. */ + for (i = 0; i < 24; i++) + for (j = 0; j < 24; j++) + for (k = 0; k < 24; k++) + A[i][j][k] = B[i][k] * C[k][j]; + + /* These loops should still be loop blocked. */ + for (i = 0; i < M; i++) + for (j = 0; j < M; j++) + for (k = 0; k < M; k++) + A[i][j][k] = B[i][k] * C[k][j]; + + return A[0][0][0] + A[M-1][M-1][M-1]; +} + +extern void abort (); + +int +main (void) +{ + int i, j, res; + + for (i = 0; i < M; i++) + for (j = 0; j < M; j++) + { + B[i][j] = i; + C[i][j] = j; + } + + res = foo (); + +#if DEBUG + fprintf (stderr, "res = %d \n", res); +#endif + + if (res != 9801) + abort (); + + return 0; +} + +/* { dg-final { scan-tree-dump-times "will be loop blocked" 1 "graphite" } } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
block-3.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: id-2.c =================================================================== --- id-2.c (nonexistent) +++ id-2.c (revision 338) @@ -0,0 +1,16 @@ +typedef _Complex float GFC_COMPLEX_4; +matmul_c4 () +{ + int x, n, count; + GFC_COMPLEX_4 * bbase_y; + GFC_COMPLEX_4 * dest_y; + GFC_COMPLEX_4 * abase_n; + GFC_COMPLEX_4 bbase_yn; + + for (n = 0; n < count; n++) + { + bbase_yn = bbase_y[n]; + for (x = 0; x < count; x++) + dest_y[x] += abase_n[x] * bbase_yn; + } +}
id-2.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: block-5.c =================================================================== --- block-5.c (nonexistent) +++ block-5.c (revision 338) @@ -0,0 +1,57 @@ +/* { dg-require-effective-target size32plus } */ + +#define DEBUG 0 +#if DEBUG +#include +#endif + +#define N 200 + +int a[N][N]; +int b[N][N]; + +static int __attribute__((noinline)) +foo (void) +{ + int i, j; + int res = 0; + + /* This loop nest should be blocked. */ + for (j = 1; j < N; j++) + for (i = 0; i < N; i++) + a[i][j] = a[i][j-1] + b[i][j]; + + for (i = 0; i < N; i++) + res += a[i][i]; + + return res; +} + +extern void abort (); + +int +main (void) +{ + int i, j, res; + + for (i = 0; i < N; i++) + for (j = 0; j < N; j++) + { + a[i][j] = i + j; + b[i][j] = i - j; + } + + res = foo (); + +#if DEBUG + fprintf (stderr, "res = %d \n", res); +#endif + + if (res != 1333300) + abort (); + + return 0; +} + +/* { dg-final { scan-tree-dump-times "will be loop blocked" 1 "graphite" } } */ +/* { dg-final { cleanup-tree-dump "graphite" } } */
block-5.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: run-id-1.c =================================================================== --- run-id-1.c (nonexistent) +++ run-id-1.c (revision 338) @@ -0,0 +1,26 @@ +/* { dg-require-effective-target size32plus } */ + +void abort (void); + +void foo (int N) +{ + int i, j; + int x[1000][1000]; + + for (i = 0; i < N; i++) + for (j = 0; j < N; j++) + x[i][j] = i + j + 3; + + for (i = 0; i < N; i++) + for (j = 0; j < N; j++) + if (x[i][j] != i + j + 3) + abort (); +} + +int main(void) +{ + foo (1000); + + return 0; +} +
run-id-1.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Index: id-4.c =================================================================== --- id-4.c (nonexistent) +++ id-4.c (revision 338) @@ -0,0 +1,7 @@ +extern a[]; +g () +{ + int i, b; + for (i = 0; i < 10; i++) + a[i] = (b == 0); +}
id-4.c Property changes : Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.