工具链优化结构到局部变量副本

时间:2017-05-24 04:47:22

标签: compiler-optimization toolchain

我有结构

struct priv_data { int a ; int b }

struct priv_data priv;

int func()
{
    a_val =   priv.a;
    b_val = priv.b;
    printf("a+b=%d , a-b = %d , a*b = %d , a/b = %d",(a_val+b_val),
    (a_val-b_val),(a_val*b_val),(a_val/b_val));
}

我的问题是编译器(工具链)作为智能避免priv.aa_val的第一份副本,因为a_val被用作只读。代替a_val使用priv.a所指的地方,以避免额外的副本。

1 个答案:

答案 0 :(得分:0)

我认为这取决于编译器以及编译选项。但是,我已经看到了多个使用O2编译时优化这些中间变量的情况。