为什么编译器没有删除无用的循环?

时间:2014-03-06 08:19:39

标签: c optimization compiler-construction

如果我有

等代码
int main() {
    int i, j, k;
    int sum = 1;

    for (i = 0; i < SIZE; i++) {
        for (j = 0; j < SIZE; j++) {
            for (k = 0; k < SIZE; k++) {
                sum = -sum;
            }
        }
    }

    printf("hello, world\n");

    return 0;
}

优化代码似乎仍在循环中。为什么编译只是删除它,因为它不影响print或return语句?

1 个答案:

答案 0 :(得分:1)

只要我指定-O2

,GCC就会删除它
gcc -Wall -O2

我以前只是编译(没有优化)

gcc -Wall