Ами на ГЦЦ съм работил последно предиоколо 4-5 години, не го знам колко се е осъвременил от тогава до сега.
Аз не казвам, че в конкретния случай това не е валидна оптимизация, само дето конкретният случай е безсмислен.
Т.е. в конкретният случай променливата от която зависи цикъла не се модифицира никъде в кода, нито пък е дефинирана като такава, дето да може да се сетне от нейде, нито е дефинирана като волатил. Компилаторът вижда това и прави единственото възможно с нея - премахва я.
Ся, мен ао питаш, с цел още по-пълна оптимизация, би требало да изкарва уорнинг със съобщение от типа - Манете идиота от клавиатурата. И да праща мейл до шефа му с подобно съдържание даже.
Всъщност, някои съвременни компилатори дори не биха изгенерирали код за функцията set_finisned(), защото тя също не се ползва. ГЦЦ-то генерира такъв, кой знае защо.
Затова казвам, пробвай да включиш тази функция в кода - преди или след цикъла (да не е явна модификацята, т.е. да не е в цикъла все пак) и да видим какво ще се случи. Дали ще остане ТЕСТ ЕАХ, ЕАХ инструкцията или ще се смени.
Не е необходимо да има мултитрединг пак казвам - променливата може да се промени и от прекъсване.
|