... when we have a function call in the return statement like this
int foo(void) {
return 0;
}
int main(int argc, char **argv) {
return foo();
}
then we actually get the trace
F2 main
R
F1 foo
R
instead of:
F2 main
| F1 foo
| R
R
The reason is that the instrumentation currently produces
_RETURN
return foo();
instead of:
auto result = foo();
_RETURN
return result;
We will not change the instrumentation because
it would be an unnecessary refactoring step and
it would remove the tail recursion in the instrumented code. This can affect the performance of the instrumented code. In trace mode, the performance is crucial.
... when we have a function call in the return statement like this
then we actually get the trace
instead of:
The reason is that the instrumentation currently produces
instead of:
We will not change the instrumentation because