gcc使用什么算法通过函数指针将调用转换为直接调用?

Tim*_*nes 5 gcc function-pointers

我听说最新版本的gcc非常擅长将调用通过函数指针转换为直接调用.但是,我无法在网上找到任何关于它的内容或通过gcc的源代码快速查看.有谁知道这是否真的如此,如果是这样,它使用什么算法来做到这一点?

小智 0

这只是价值传播的一种形式。如果我可以证明对象指针 p(指向虚拟类)始终指向特定具体类的对象,那么我可以直接调用该类的成员函数。如果没有,我必须检查 vtable。