ZHCU820Y September 2004 – June 2021
当可以通过多种方式访问单个对象时,例如当两个指针指向同一个对象或一个指针指向一个命名对象时,便会出现别名。别名会破坏优化,这是因为任何间接引用都可以引用另一个对象。优化器会分析代码以确定哪里可以出现别名,哪里或不可以出现别名,然后在保持程序正确性的同时尽可能进行优化。优化器谨慎执行其行为。如果两个指针有可能指向同一个对象,那么优化器就会假设这两个指针确实指向同一个对象。
编译器认为,如果将局部变量的地址传递给某个函数,则该函数会通过指针写入来更改局部变量。这使得局部变量的地址在返回后无法在其他地方使用。例如,被调用的函数不能将局部变量的地址分配给全局变量或返回局部变量的地址。如果此假设无效,,请使用 --aliased_variables 编译器选项强制编译器采用最坏情况下的别名。在最坏情况下的别名中,任何间接引用都可以引用这样的变量。