Consider a sample where a transaction callable function has a recursive
call to itself:
int george;
void NewQueueNode()
{
__transaction [[atomic]] { george=999; }
NewQueueNode();
}
Currently, when we are transforming calls to their transactional clone
counterparts, we stop transforming once we reach the end of a
transaction. Ultimately, this means that in the cloned function, the
recursive call to NewQueueNode() will have the edges redirected to the
clone, but the gimple_call_fndecl() in the clone will still be pointing
to the original function. This causes cgraph verification to fail with
a "edge points to wrong declaration" ICE.