icc doesn't like -fomit-frame-pointer without -O
[libfirm] / ir / be / test / llvm / DuffsDevice.c
1 /* This silly testcase is here to check that "Duff's Device" works properly
2  * in LLVM.  Guess what, it does.  :)
3  *
4  * For more info, see: http://www.lysator.liu.se/c/duffs-device.html
5  */
6
7 #include <stdio.h>
8
9         sum(to, from, count)
10         register short *to, *from;
11         register count;
12         {
13                 register n=(count+7)/8;
14                 switch(count%8){
15                 case 0: do{     *to += *from++;
16                 case 7:         *to += *from++;
17                 case 6:         *to += *from++;
18                 case 5:         *to += *from++;
19                 case 4:         *to += *from++;
20                 case 3:         *to += *from++;
21                 case 2:         *to += *from++;
22                 case 1:         *to += *from++;
23                         }while(--n>0);
24                 }
25         }
26
27 int main() {
28         short Array[100];
29         short Sum = 0;
30         int i;
31
32         for (i = 0; i != 100; ++i)
33                 Array[i] = i;
34
35         sum(&Sum, Array, 100);
36
37         printf("Sum is %d\n", Sum);
38
39         return 0;
40 }