Имеем:
Код
u8 *p;
int x1;
IAR6.50 компилирует выражение
p -= x1 в:
Код
RSBS R1,R7,#+0
ADDS R1,R1,R2
Нафига??? Почему не простой SUBS???
В то же время, если записать это выражение по другому
p = (u8 *)((int)p - x1), то всё ок:
Код
SUBS R1,R2,R7
Как будто специально не оптимизирует, а наоборот - увеличивает размер кода.

Вроде такое только с указателями наблюдается, если-бы p была типа int, то тогда всё ок - одна SUBS.
Может надо что-то подправить в косерватории? Мелочь конечно, но неприятно. А писать каждый раз громоздкие приведения к int и обратно - не комильфо.