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
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.