/* Tests for single stepping through various branch conditions */ int noscramble(int a) { return a ; } int echo(int a) { return noscramble(a) ; } int equaltest(int a,int b) { int retval ; if (a == b) retval = noscramble(1) ; else retval = noscramble(0) ; return retval ; } int neqtest(int a , int b) { int retval ; if (a != b) retval = echo(1) ; else retval = echo(2) ; return retval ; } int zerotest(int a ) { int retval ; a = echo(a) ; if (a ==0) retval = echo(1) ; else retval = echo(0) ; retval = echo(retval) ; return retval ; } int zerotest2(int a) { return (a==0) ; } int nonzerotest(int a) { int retval ; if (a != 0) retval = echo(0) ; else retval = echo(1) ; return retval ; } int whiletest(int a) { while (a > 0) { a-- ; } return 0 ; } int whiletest2(int a) { while (a > 0) { a = noscramble(a) ; a-- ; } return a ; } int decr(int x) { return x - 1 ; } int while3(int a) { int b = a ; while (a == b) { a = echo(a) ; b = decr(b) ; } return a ; } void done (int x) { } int main() { int a,b,c,d ; done(1) ; a = echo(123456) ; b = echo(123456) ; c = echo(56789) ; d = echo(0) ; #if 1 equaltest(a,b) ; done(7) ; equaltest(a,c) ; done(8) ; whiletest(3) ; /* worked */ done(3) ; while3(3) ; done(6) ; #endif neqtest(a,b) ; neqtest(a,b) ; neqtest(a,c) ; zerotest(d) ; zerotest(a) ; done(5) ; nonzerotest(d) ; done(4) ; nonzerotest(a) ; done(111) ; return 1 ; }