summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfche <fche>2005-09-13 00:45:24 +0000
committerfche <fche>2005-09-13 00:45:24 +0000
commitbf9bd203c3acd94614b93ba0187148a1deda043c (patch)
tree1e88f3c68ba79782aa432a58be6ea27e452982da
parent897820ca8cf35d061f366704dd9b0a7981793190 (diff)
downloadsystemtap-steved-bf9bd203c3acd94614b93ba0187148a1deda043c.tar.gz
systemtap-steved-bf9bd203c3acd94614b93ba0187148a1deda043c.tar.xz
systemtap-steved-bf9bd203c3acd94614b93ba0187148a1deda043c.zip
2005-09-12 Frank Ch. Eigler <fche@elastic.org>
PR 1335 * translate.cxx (c_tmpcounter::visit_functioncall): Correct recursion sequence. * testsuite/buildok/nineteen.stp: New test case.
-rw-r--r--ChangeLog7
-rwxr-xr-xtestsuite/buildok/nineteen.stp21
-rw-r--r--translate.cxx4
3 files changed, 29 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index d08f6202..e91f1b1a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2005-09-12 Frank Ch. Eigler <fche@elastic.org>
+
+ PR 1335
+ * translate.cxx (c_tmpcounter::visit_functioncall): Correct
+ recursion sequence.
+ * testsuite/buildok/nineteen.stp: New test case.
+
2005-09-12 Graydon Hoare <graydon@redhat.com>
PR 1306
diff --git a/testsuite/buildok/nineteen.stp b/testsuite/buildok/nineteen.stp
new file mode 100755
index 00000000..be12b6f7
--- /dev/null
+++ b/testsuite/buildok/nineteen.stp
@@ -0,0 +1,21 @@
+#! stap -p4
+
+function msg1 (x) {
+ log(x)
+}
+function msg2 (x,y) {
+ log(x." ".y)
+}
+
+probe begin {
+ msg1("55");
+ msg1(string(55))
+
+ msg2("100", "GOOD")
+ msg2("GOOD", string(100))
+
+# the next line caused a compile failure when uncommented; PR 1335
+ msg2(string(100), "GOOD")
+
+ exit()
+}
diff --git a/translate.cxx b/translate.cxx
index 6b00cd9e..9f057043 100644
--- a/translate.cxx
+++ b/translate.cxx
@@ -2259,10 +2259,8 @@ c_tmpcounter::visit_functioncall (functioncall *e)
{
tmpvar t = parent->gensym (r->formal_args[i]->type);
t.declare (*parent);
+ e->args[i]->visit (this);
}
-
- for (unsigned i=0; i<e->args.size(); i++)
- e->args[i]->visit (this);
}