Цитата(demiurg_spb @ Oct 29 2010, 16:24)

на тестовом проекте mega8 (flash usage 99%) выигрыш в 12 байт - мелочь, а приятно!
на тестовом проекте mega1281 (flash usage 60%) выигрыш в 1062 байт - круто!!!!!!!!!!!!!!!!!!!!!!!!
В железе работает. Мин нет:-)
Точно работает? Во всех режимах проверил? У меня все проекты увеличились, а уменьшение, а тем более на килобайт, говорит о том, что он скорее всего выкинул ненужные по его мнению куски кода. Впрочем, возможно они и в самом деле ненужные.
Хуже то, что у меня появились какие-то непонятные варнинги. В одном проекте он написал:
Цитата
warning: dereferencing pointer 'pr' does break strict-aliasing rules
Этот указатель устанавливается на середину некоего массива с насильственным преобразованием типа примерно таким образом:
CReply* pr = (CReply*)&Data[350/2];
может это и не красиво, но какое его собачье дело куда я ставлю указатель?
В другом проекте ругается на объявление регистровых переменных volatile register uint8_t <...>
Цитата
warning: optimization may eliminate reads and/or writes to register variables
Здесь вообще не понятно что он имеет в виду.