оптимизированный вариант
Компилятор msvc всегда стремится генерировать циклы, стремящиеся к нулю, icl этого не делает вообще, а gcc прибегает к трансформации циклов только в тех в некоторых, наиболее очевидных случаях. В частности, он избегает трогать циклы, содержащие ссылки на память.
* msvc: всегда стремит циклы к нулю
* icl: никогда не стремит циклы к нулю
* gcc: стремит некоторые циклы к нулю