[PATCH] D23988: [compiler-rt][XRay] Support tail call sleds
Dean Michael Berris via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 28 20:16:52 PDT 2016
dberris added a comment.
In https://reviews.llvm.org/D23988#555375, @rSerge wrote:
> Debugging for me has shown that the above happens because `printf` from `fC` is also called as a tail call. So first the exit sled of `fC` is executed, and only then `printf` is jumped into. So it seems we can't do anything about this with the current approach.
This isn't such a bad thing though, given the following construction:
f1()
f2()
f3()
If we get `f2()` tail-calling into `f3()` and `f3()` tail calling into something else that isn't instrumented (not shown here), then we will still see:
f1()
f2()
f3()
... missing ...
However, since `f1()` is instrumented, we will see that time spent outside of `f3()` will be attributed to `f1()`.
This is predicated though on having an enclosing function that is instrumented. To see this in your example, you can wrap the call to `fA()` with another function that will not tail-call into `fA()`.
https://reviews.llvm.org/D23988
More information about the llvm-commits
mailing list