如果我有這樣的代碼爲什麼編譯器不能刪除無用循環?
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;
}
的優化代碼仍然似乎是通過環路走了。爲什麼編譯只是刪除它,因爲它不影響打印或返回語句?
與您編譯哪些選項編譯去除呢? – bolov
...哪個C編譯器? –
也可以問:爲什麼它會刪除循環?優化器的主要工作是使代碼快速運行,而不是執行困難的依賴性檢查並將其刪除。也請發佈可編譯代碼。什麼是「尺寸」? – stijn