Замена циклов с предусловием на циклы с пост-условием
Циклы с предусловием (for, while) содержат по меньшей мере на одно ветвление больше, чем аналогичные им циклы с постусловием. Как нетрудно сообразить— в конце цикла с предусловием находится безусловный переход, возвращающий управление в начало, а в цикле с постусловием передача управления по "совместительству" еще выполняет и проверку условия.
Все три рассматриваемых компилятора всегда заменяют циклы с предусловиям на циклы с постусловием, когда это выгодно.
* msvc: заменяет циклы с предусловием на циклы с постусловием
* icl: заменяет циклы с предусловием на циклы с постусловием
* gcc: заменяет циклы с предусловием на циклы с постусловием