Для волатильных объектов компилятор фактически не применяет оптимизацию, поэтому
для if(--x) ... мы наблюдаем классику жанра по полной программе (read-modify-store).
Прочитали x декрементировали, сохранили, прочитали вновь, сравнили с нулём.
Естественно, можно было оптимизировать и не производить повторное чтение после записи, но gcc под это видимо не заточен.
Интересно глянуть бы на то как IAR это скушает.
PS: Был очень приятно удивлён Вашему звонку!
Приятно общаться не топча кнопок

Жаль что пивка с Вами не попить - уж больно далеко до Оксфорда.
Кстати как Англия пережила не засчитанный гол на чемпионате мира?
Теперь поди не будут артачится против внедрения видео повтора при вынесении судейских решений...