Ну у нас так всё пишется на ассемблере - следовательно зависит только от версии ассемблера и линковщика. А тут добавляется ещё компилятор со своей крайне нетривиальной логикой, новыми оптимизациями и т.д.
В результате, сегодня на версии 4.0.1 он что-то сделал, а версия 4.0.2 попробует по-другом договориться.
Так можно начать жаловаться, что нужно знать семантику языка, на котором пишешь. Как будто для C/C++ знать что там UB, а что -- нет, не обязательно.
Мне непонятно, зачем заново договариваться с новой версией компилятора, если можно сохранить (закешировать) оптимизированную версию?