some interesting testcases to look at
authorMatthias Braun <matze@braunis.de>
Wed, 17 Oct 2007 15:25:28 +0000 (15:25 +0000)
committerMatthias Braun <matze@braunis.de>
Wed, 17 Oct 2007 15:25:28 +0000 (15:25 +0000)
[r16253]

ir/be/test/codegen/README [new file with mode: 0644]
ir/be/test/codegen/countingloop.c [new file with mode: 0644]
ir/be/test/codegen/leas.c [new file with mode: 0644]
ir/be/test/codegen/spillharness.c [new file with mode: 0644]

diff --git a/ir/be/test/codegen/README b/ir/be/test/codegen/README
new file mode 100644 (file)
index 0000000..e8599a6
--- /dev/null
@@ -0,0 +1 @@
+This directory contains some interesting chalenges for an x86 backend...
diff --git a/ir/be/test/codegen/countingloop.c b/ir/be/test/codegen/countingloop.c
new file mode 100644 (file)
index 0000000..dad82ea
--- /dev/null
@@ -0,0 +1,21 @@
+char *pt;
+
+int gf, gm;
+
+int f(int max) {
+       int i;
+       int f = 0;
+       int m = 0;
+       char *p = pt;
+
+       for(i = 0; i < max; ++i) {
+               if(pt[i] == 0) {
+                       f++;
+               } else {
+                       m++;
+               }
+       }
+       gf = f;
+       gm = m;
+       return 0;
+}
diff --git a/ir/be/test/codegen/leas.c b/ir/be/test/codegen/leas.c
new file mode 100644 (file)
index 0000000..aaaf769
--- /dev/null
@@ -0,0 +1,30 @@
+int k, g, h;
+
+char *arr;
+
+enum e_block_types {CLB, OUTPAD, INPAD, IO, ILLEGAL};
+struct s_block {
+       char *name;
+       enum e_block_types type;
+       int *nets;
+       int x;
+       int y;
+};
+
+extern struct s_block *block;
+extern int num_blocks;
+
+int my_rand(int max);
+
+int f(int x, int y, int z)
+{
+       k = x;
+       g = y;
+       h = z;
+       int b_from = my_rand(num_blocks - 1);
+
+       while(block[b_from].type != CLB) {
+               b_from = my_rand(num_blocks-1);
+       }
+       return 0;
+}
diff --git a/ir/be/test/codegen/spillharness.c b/ir/be/test/codegen/spillharness.c
new file mode 100644 (file)
index 0000000..d3899e4
--- /dev/null
@@ -0,0 +1,30 @@
+int max = 1000000;
+
+void mark(void);
+int foo(void);
+
+int main(int argc, char **argv) {
+       int i;
+       int val;
+
+       for(i = 0; i < max; ++i) {
+               val = rand();
+       }
+
+       mark();
+       for(i = 0; i < max; ++i) {
+               int i1 = foo();
+               int i2 = foo();
+               int i3 = foo();
+               int i4 = foo();
+               int i5 = foo();
+               int i6 = foo();
+               int i7 = foo();
+
+               i += i1 +i2 +i3+i4+i5+i6+i7;
+               printf("%d\n", i);
+       }
+
+       printf("end\n");
+       return val;
+}