diff options
author | David Taylor <taylor@redhat.com> | 1999-01-04 15:37:21 +0000 |
---|---|---|
committer | David Taylor <taylor@redhat.com> | 1999-01-04 15:37:21 +0000 |
commit | 8e260d5270d6b2228b710ba2dc0b24ad6eb98222 (patch) | |
tree | 2ee753aef4d6179db32b4dffc378a9b6cb7c114e /gdb/testsuite/gdb.hp/optimize.c | |
parent | 7cada34aec73e03dbbbb95fbfb07c6fc5c5ed4bb (diff) | |
download | fsf-binutils-gdb-8e260d5270d6b2228b710ba2dc0b24ad6eb98222.zip fsf-binutils-gdb-8e260d5270d6b2228b710ba2dc0b24ad6eb98222.tar.gz fsf-binutils-gdb-8e260d5270d6b2228b710ba2dc0b24ad6eb98222.tar.bz2 |
new files -- part of HP merge.
Diffstat (limited to 'gdb/testsuite/gdb.hp/optimize.c')
-rw-r--r-- | gdb/testsuite/gdb.hp/optimize.c | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.hp/optimize.c b/gdb/testsuite/gdb.hp/optimize.c new file mode 100644 index 0000000..2a8daa8 --- /dev/null +++ b/gdb/testsuite/gdb.hp/optimize.c @@ -0,0 +1,76 @@ +/* Source for debugging optimimzed code test. + + cc -g -O -o optimize optimize.c +*/ +int callee(); +int test_opt; + +int main() +{ + int a,b,c,d,e,f,g,h; + + a = 10;; + + /* Value propagate + */ + b = 2 * a + 1; + c = 3 * b + 2; + + /* Re-use expressions + */ + d = (2 * a + 1) * (3 * b + 2); + e = (2 * a + 1) * (3 * b + 2); + + /* Create dead stores--do lines still exist? + */ + d = (2 * a + 1) * (3 * b + 2); + e = (2 * a + 1) * (3 * b + 2); + d = (2 * a + 1) * (3 * b + 2); + e = (2 * a + 1) * (3 * b + 2); + + /* Alpha and psi motion + */ + if( test_opt ) { + f = e - d; + f = f--; + } + else { + f = e - d; + f = f + d * e; + } + + /* Chi and Rho motion + */ + h = 0; + do { + h++; + a = b * c + d * e; /* Chi */ + f = f + d * e; + g = f + d * e; /* Rho */ + callee( g+1 ); + test_opt = (test_opt != 1); /* Cycles */ + } while( g && h < 10); + + /* Opps for tail recursion, unrolling, + * folding, evaporating + */ + for( a = 0; a < 100; a++ ) { + callee( callee ( callee( a ))); + callee( callee ( callee( a ))); + callee( callee ( callee( a ))); + } + + return callee( test_opt ); +} + +/* defined late to keep line numbers the same +*/ +int callee( x ) + int x; /* not used! */ +{ + test_opt++; /* side effect */ + + return test_opt; +} + +/* end */
\ No newline at end of file |