gcc无法优化身份功能

时间:2014-08-01 16:57:08

标签: c gcc optimization clang

似乎虽然clang 3.4.2可以将foo优化为无操作,但gcc 4.9.1不能并且​​将生成十几条指令。使用-O3在x86-64上进行了测试。

我认为优化是安全的,因为结构未声明volatile。是否有一些标志可以将其优化掉?

struct s { /* arbitrary struct */
    long long m1;
    char m2[235];
    int m3;
    double m4;
};

static struct s bar(struct s x) {
    return x;
}

void foo(struct s *x) {
    *x = bar(*x);
}

0 个答案:

没有答案