david-xl wrote:

> The work sounds interesting. Can you provide a bit more context about it? 
> Will it be used to improve ICP when it's sufficient to just compare the 
> vtable address instead of the vfunc address?

yes -- it can not only eliminate vtable load, but also enable target check 
combining.

What is more important is that it can be combined with more aggressive 
interprocedural type propagation that enables full (unconditional) 
devirtualization. Example:

base->foo();
base->bar();
==> 
if (base->vptr == Derived) {
     Derived::foo(base);       // base type is known so virtual calls in 
foo,bar can further be devirtualized.
     Derived::bar(base);
 } else {..
}
   

https://github.com/llvm/llvm-project/pull/66825
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to