1 /* Tests for single stepping through various branch conditions */
2
noscramble(int a)3 int noscramble(int a)
4 {
5 return a ;
6 }
7
echo(int a)8 int echo(int a)
9 { return noscramble(a) ; }
10
equaltest(int a,int b)11 int equaltest(int a,int b)
12 { int retval ;
13 if (a == b)
14 retval = noscramble(1) ;
15 else retval = noscramble(0) ;
16 return retval ;
17 }
18
neqtest(int a,int b)19 int neqtest(int a , int b)
20 { int retval ;
21 if (a != b)
22 retval = echo(1) ;
23 else retval = echo(2) ;
24 return retval ;
25 }
zerotest(int a)26 int zerotest(int a )
27 { int retval ;
28 a = echo(a) ;
29 if (a ==0)
30 retval = echo(1) ;
31 else
32 retval = echo(0) ;
33 retval = echo(retval) ;
34 return retval ;
35 }
36
zerotest2(int a)37 int zerotest2(int a)
38 {
39 return (a==0) ;
40 }
41
nonzerotest(int a)42 int nonzerotest(int a)
43 {
44 int retval ;
45 if (a != 0)
46 retval = echo(0) ;
47 else retval = echo(1) ;
48 return retval ;
49 }
50
whiletest(int a)51 int whiletest(int a)
52 {
53 while (a > 0)
54 {
55 a-- ;
56 }
57 return 0 ;
58 }
whiletest2(int a)59 int whiletest2(int a)
60 {
61 while (a > 0)
62 {
63 a = noscramble(a) ;
64 a-- ;
65 }
66 return a ;
67 }
68
decr(int x)69 int decr(int x) { return x - 1 ; }
70
while3(int a)71 int while3(int a)
72 {
73 int b = a ;
74 while (a == b)
75 {
76 a = echo(a) ;
77 b = decr(b) ;
78 }
79 return a ;
80 }
81
done(int x)82 void done (int x) { }
83
main()84 int main()
85 {
86 int a,b,c,d ;
87 done(1) ;
88 a = echo(123456) ;
89 b = echo(123456) ;
90 c = echo(56789) ;
91 d = echo(0) ;
92 #if 1
93 equaltest(a,b) ;
94 done(7) ;
95 equaltest(a,c) ;
96 done(8) ;
97 whiletest(3) ; /* worked */
98 done(3) ;
99 while3(3) ;
100 done(6) ;
101 #endif
102 neqtest(a,b) ;
103 neqtest(a,b) ;
104 neqtest(a,c) ;
105 zerotest(d) ;
106 zerotest(a) ;
107 done(5) ;
108 nonzerotest(d) ;
109 done(4) ;
110 nonzerotest(a) ;
111 done(111) ;
112 return 1 ;
113 }
114