opaque函数调用在编译器优化中意味着什么?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opaque函数调用在编译器优化中意味着什么?相关的知识,希望对你有一定的参考价值。

opaque函数调用在编译器优化中意味着什么?我在Why do global variables cause trouble for compiler optimizations in function calls?中找到它,'opaque function call'真的让我感到困惑。似乎opaque函数调用是函数调用,编译器没有关于它的信息。但是这是什么意思?

答案

正如您在问题中提到的,opaque函数调用是对函数的调用,编译器没有先前的信息。这意味着除了语言定义所保证的内容之外,编译器不能对此调用的副作用做出任何假设。例如,由于编译器没有其他信息,因此必须假定函数调用可以修改任何全局变量,并且必须确保在调用之前存储任何本地更改,它还必须重新加载调用后使用的全局变量。此外,编译器永远不会跳过调用此函数,即使调用它看起来没用,因为编译器无法确定这一点。

以上是关于opaque函数调用在编译器优化中意味着什么?的主要内容,如果未能解决你的问题,请参考以下文章

硬核文章:编译器都做了哪些优化?

未使用函数参数的编译器优化

内联函数和编译器对Go代码的优化

iOS Runtime理解

优化C++软件

优化C++软件