From f3c26ea55e2f2c1d222312bf75035359c439ed21 Mon Sep 17 00:00:00 2001 From: fche Date: Sun, 5 Jun 2005 16:35:28 +0000 Subject: 2005-06-05 Frank Ch. Eigler Implement for/next/continue/break/while statements. * staptree.h: Declare new 0-arity statement types. Tweak for_loop. * parse.cxx: Parse them all. * translate.cxx (c_unparser): Maintain break/continue label stack. (visit_for_loop, *_statement): New implementations. * elaborate.*, staptree.cxx: Mechanical changes. * testsuite/parseok/ten.stp, semko/twelve.stp, transko/two.stp, transok/five.stp: New tests. --- testsuite/parseok/ten.stp | 17 +++++++++++++++++ testsuite/semko/twelve.stp | 6 ++++++ testsuite/transko/two.stp | 11 +++++++++++ testsuite/transok/five.stp | 17 +++++++++++++++++ 4 files changed, 51 insertions(+) create mode 100755 testsuite/parseok/ten.stp create mode 100755 testsuite/semko/twelve.stp create mode 100755 testsuite/transko/two.stp create mode 100755 testsuite/transok/five.stp (limited to 'testsuite') diff --git a/testsuite/parseok/ten.stp b/testsuite/parseok/ten.stp new file mode 100755 index 00000000..25d16e62 --- /dev/null +++ b/testsuite/parseok/ten.stp @@ -0,0 +1,17 @@ +#! stap -p1 + +probe two +{ + for (;;) ; + for (a=0;;) { a + 4; break } + for (;a>0;) { a + 5; continue } + for (;;a++) { a + 5 } + for (a=0;a>0;) { a + 4 } + for (;a>0;a++) { a + 5 } + for (a=0;;a++) { a + 5 } + for (a=0; a<=4; a++) ; + for (a=0; a<=4; a++) { b = a } + next + while (99) ; + while (99) { break continue } +} diff --git a/testsuite/semko/twelve.stp b/testsuite/semko/twelve.stp new file mode 100755 index 00000000..ab71d579 --- /dev/null +++ b/testsuite/semko/twelve.stp @@ -0,0 +1,6 @@ +#! stap -p2 + +probe end { + for (a=0; "hello";) {} + while ("goodbye") {} +} diff --git a/testsuite/transko/two.stp b/testsuite/transko/two.stp new file mode 100755 index 00000000..69f78b5c --- /dev/null +++ b/testsuite/transko/two.stp @@ -0,0 +1,11 @@ +#! stap -p3 + +function bar () { + next +} + +probe foo { + break + for (a=0; a<10; a=a+1) for (b=0; b<10; b=b+1) ; + continue +} diff --git a/testsuite/transok/five.stp b/testsuite/transok/five.stp new file mode 100755 index 00000000..266b3408 --- /dev/null +++ b/testsuite/transok/five.stp @@ -0,0 +1,17 @@ +#! stap + +probe two +{ + for (;;) ; + for (a=0;;) { if (a > 4) break } + for (;a>0;) { a + 5 } + for (;;a=a+1) { a + 5 } + for (a=0;a>0;) { if (a < 4) continue } + for (;a>0;a=a+1) { a + 5 } + for (a=0;;a=a+1) { a + 5 } + for (a=0; a<=4; a=a+1) ; + for (a=0; a<=4; a=a+1) { b = a } + + while (99) next + while (99) {} +} -- cgit