1. If ParseAPI identifies a jump as a tail call, but later find that this jump is...
authorXiaozhu Meng <xmeng@cs.wisc.edu>
Wed, 3 Apr 2019 23:04:14 +0000 (18:04 -0500)
committerXiaozhu Meng <xmeng@cs.wisc.edu>
Fri, 12 Apr 2019 20:17:43 +0000 (15:17 -0500)
commit16f076fb28794876c0fa0086b0d948ddc275f1f1
treec11e978b0928ac0e7f3985a484d19be98ee5b59a
parent9e06ffb3ed18a408839def2ab2d24bb56817ac7a
1. If ParseAPI identifies a jump as a tail call, but later find that this jump is the only incoming edge of the targXXX function, we should not treat this jump as a tail call.

In theory, it is reasonable either way. However, treating such jump
as a tail call can cause troubles for function entry instrumentation.
If the targXXX function may jump back to the original function, and
thus reach the tail jump. This becomes a recursive tail call.

However, Dyninst relocation seems to have problem adjusting the tail jump
to include entry instrumentation.

2. If the determination of a tail call is changed, we should re-compute
function boundaries, including ret blocks, exit blocks, call edges
parseAPI/src/Function.C
parseAPI/src/Parser.C
parseAPI/src/Parser.h