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

时间:2018-01-03 13:29:44

标签: c multithreading concurrency compiler-construction lock-free

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

1 个答案:

答案 0 :(得分:3)

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