Hi,
> 
> Why does it "punish" -fno-ipa-pta?  It merely "punishes" modref of
> no longer claiming that we do not alter the instruction stream pointed
> to by a->foo, sth that shouldn't be very common.

For example
struct a {
  void (*foo)();
  void *bar;
}
fn(struct a *a)
{
   a->foo();
}

With Maritn's patch we will drop EAF flags of A to NODIRECTESCAPE since 
we will think its derefernece is is used in all posible ways. 

With my patch we get NOT_RETURNED | NOESCAPE.
Still we will make PTA to think that whatever is pointed to by bar may
be clobbered and this seems unnecessary.

I have to look into ipa-pta how it haldnes the "instruction stream
clobbering". I was not aware it does something smart about indirect
calls.

Honza

Reply via email to