The simple case of:
int *callee();
void *caller(void *a) {
if (a == NULL)
return callee();
return a;
}would generate a regular call instead of a tail call because we don't
look through the bitcast of the call to callee when duplicating the
return blocks.