Компилятор честно решил, что он только что присвоил Start значение FastTimer, значит они равны, разность равна 0 а ноль меньше TERMINAL_RX_TIMEOUT и просто выкинул проверку. IAR, оптимизация максимальная по размеру. Добавил volatile в объявление FastTimer - все заработало.