On 09/24/14 01:28, Ilya Enkovich wrote:
I'm a bit curious why you removed the original RETBND statement in
value-prof, only to reinsert it. Is there some reason you needed to do
that?
After call transformation we have smth like that:
if (<confition>)
new_lhs = direct_call (...);
else
old_lhs = call (...);
old_bnd = __builtin_retbnd (old_lhs);
Original retbnd statement removal + reinsertion is used to transform it into:
if (<confition>)
new_lhs = direct_call (...);
else
{
old_lhs = call (...);
old_bnd = __builtin_retbnd (old_lhs);
}
The rest of code inserts bounds for new_lhs and creates phi node for
bounds similar to what is done for call return value.
Oh yea, makes perfect sense, the earlier code inserted the conditional,
but left the bounds setting bits in their prior (now the merge point)
location.
Thanks,
Jeff