Rename newtestsuite to testsuite
[dyninst.git] / testsuite / src / dyninst / test1_33_mutatee.c
1 #include "mutatee_util.h"
2
3 /* group_mutatee_boilerplate.c is prepended to this file by the make system */
4
5 /* Externally accessed function prototypes.  These must have globally unique
6  * names.  I suggest following the pattern <testname>_<function>
7  */
8
9 void test1_33_func2(int x);
10 int test1_33_func3(int x);
11
12 /* Global variables accessed by the mutator.  These must have globally unique
13  * names.
14  */
15
16 int test1_33_globalVariable1 = 0;
17
18 /* Internally used function prototypes.  These should be declared with the
19  * keyword static so they don't interfere with other mutatees in the group.
20  */
21
22 /* Global variables used internally by the mutatee.  These should be declared
23  * with the keyword static so they don't interfere with other mutatees in the
24  * group.
25  */
26
27 /* Function definitions follow */
28
29 int global33_2 = 0;
30
31 int test1_33_mutatee() {
32   int passed;
33
34     /* The only possible failures occur in the mutator. */
35
36     passed = test1_33_globalVariable1;
37     if ( passed ) {
38        logerror( "Passed test #33 (control flow graphs)\n" );
39        test_passes(testname);
40        return 0; /* Test passed */
41     } else {
42        logerror( "Failed test #33 (control flow graphs)\n" );
43        return -1; /* Test failed */
44     }
45
46 }
47
48 void test1_33_func2(int x) {
49     /* dprintf("Hello\n"); */
50
51     if (x == 1) {
52         /* dprintf("Goodbye.\n"); */
53         global33_2 = 1;
54     } else {
55         /* dprintf("See you.\n"); */
56         global33_2 = 2;
57     }
58
59     /* dprintf("That's all.\n"); */
60 }
61
62 int test1_33_func3(int x) {
63     /* dprintf("Entry.\n"); */
64
65     /* The Intel compiler for IA-64 requires at least 18 entries to
66        trigger the generation of a jump table. */
67     switch (x) {
68       case 0:
69         /* dprintf("0\n"); */
70         x += 11;
71         break;
72       case 1:
73         /* dprintf("1\n"); */
74         x += 10;
75         break;
76       case 2:
77         /* dprintf("2\n"); */
78         x-= 12;
79         break;
80       case 3:
81         /* dprintf("3\n"); */
82         x *= 33;
83         break;
84       case 4:
85         /* dprintf("4\n"); */
86         x /= 42;
87         break;
88       case 5:
89         /* dprintf("5\n"); */
90         x %= 57;
91         break;
92       case 6:
93         /* dprintf("6\n"); */
94         x <<= 2;
95         break;
96       case 7:
97         /* dprintf("7\n"); */
98         x >>= 3;
99         break;
100       case 8:
101         /* dprintf("8\n"); */
102         x ^= 0xfe;
103         break;
104       case 9:
105         /* dprintf("9\n"); */
106         x &= 0x44;
107         break;
108       case 10:
109         /* dprintf("10\n"); */
110         x |= 0x11;
111         break;
112       case 11:
113         /* dprintf("11\n"); */
114         x += 110;
115         break;
116       case 12:
117         /* dprintf("12\n"); */
118         x-= 112;
119         break;
120       case 13:
121         /* dprintf("13\n"); */
122         x *= 133;
123         break;
124       case 14:
125         /* dprintf("14\n"); */
126         x /= 142;
127         break;
128       case 15:
129         /* dprintf("15\n"); */
130         x %= 157;
131         break;
132       case 16:
133         /* dprintf("16\n"); */
134         x <<= 12;
135         break;
136       case 17:
137         /* dprintf("17\n"); */
138         x >>= 13;
139         break;
140       case 18:
141         /* dprintf("18\n"); */
142         x ^= 0x1fe;
143         break;
144       case 19:
145         /* dprintf("19\n"); */
146         x &= 0x144;
147         break;
148     };
149
150     /* dprintf("Exit.\n"); */
151
152     return x;
153 }