То, что он это в одном месте сделал, в другом нет, при одном размере сделал, при другом нет, одна версия компилятора сделала, другая нет - это всё "фичи реализации". Но они на всё это ИМЕЮТ ПРАВО. Кстати, и i = i++ + i++; может дать разный результат - это тоже баг оптимизатора? Нет, это неправильность написания текста. Случаи с необходимостью volatile, возможно, посложнее для понимания. Точно-точно пустой разговор.