ZHCU876Z July 2001 – October 2023 SM320F28335-EP
当可以通过多种方式访问单个对象时,例如当两个指针指向同一个对象或一个指针指向一个命名对象时,便会出现别名。别名会破坏优化,这是因为任何间接引用都可以引用另一个对象。编译器分析代码以确定哪里可以出现别名,哪里不可以出现别名,然后在保持程序正确性的同时尽可能地进行优化。编译器谨慎作为。
编译器假定,如果将局部变量的地址传递给函数,则该函数可能通过指针写入来更改局部变量,但返回后不会将局部变量的地址提供给其他地方使用。例如,被调用函数不能将局部变量的地址分配给全局变量或返回该地址。如果此假定无效,请使用 -ma 编译器选项迫使编译器假定最坏情况的别名。在最坏情况的别名中,任何间接引用(即,使用指针)都可以引用这样的变量。