ipa-cp is behaving funny here. It clones InitCommon so THIS pointer's binfo is
known to enable devirtualization of SetLayoutDirection.
It doesn't devirtualize GetLayoutDirection because it works on per-argument
basis.  This is stupid: obviously whenever THIS binfo is known also DC binfo is
known, so we should propagate both into the clone. This is missed optimization
relative to previous ipa-cp implementation and I think relatively serious one -
it is very common that more than one argument is constant.
Martin, can you take a look?

Still don't know exactly why we miss the devirtualization after inlining.

Honza

Reply via email to