Thu Apr 16 10:52:34 1998 John Metzler <jmetzler@cygnus.com>
authorJohn Metzler <jmetzler@cygnus>
Thu, 16 Apr 1998 17:56:11 +0000 (17:56 +0000)
committerJohn Metzler <jmetzler@cygnus>
Thu, 16 Apr 1998 17:56:11 +0000 (17:56 +0000)
* gdb.base/branches.c: Code with lots of loops and
  subroutines. Used to test gdbs ability to single step through PC
  changes, especially to test mips-tdep.c:mips_next_pc

gdb/testsuite/gdb.base/branches.c [new file with mode: 0644]

diff --git a/gdb/testsuite/gdb.base/branches.c b/gdb/testsuite/gdb.base/branches.c
new file mode 100644 (file)
index 0000000..df3b7c0
--- /dev/null
@@ -0,0 +1,113 @@
+/* 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 ;
+}