【问题标题】:toolchain optimization structure to local variable copy工具链优化结构到局部变量副本
【发布时间】:2017-05-24 04:47:21
【问题描述】:

我有结构

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 在它提到的任何地方,以避免额外的复制。

【问题讨论】:

    标签: compiler-optimization toolchain


    【解决方案1】:

    我认为这取决于编译器以及编译选项。但是,我看到过很多这样的中间变量在使用 O2 编译时会得到优化的情况。

    【讨论】:

    • 我明白,但是,大多数编译器优化逻辑必须是标准正确的(比如通过次数,每次通过的目的)等等。有没有简单的方法来检查。
    猜你喜欢
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    相关资源
    最近更新 更多