shads, сейчас проверил на avr-gcc 4.3.3 варианты
__attribute__ ((used)) volatile register uint8_t varr asm("r5");
((used)) volatile register uint8_t varr asm("r5");
В обоих случаях компилятор не использует указанный регистр. Да же если "вычищены" операции с этим регистром (не имеющие смысла по "мнению" компилятора).
Т.е. регистр, похоже, реально зарезервирован. В дизассемблерном файле просто нет никакого упоминания этого регистра.
Проверял так. Брал прогу, компилил, смотрел дизассемблер, выбирал какой-либо используемый регистр, резервировал регистр, компилил, смотрел дизассемблер.
А собранные библиотеки вы используете? А они скомпилированы с резервированием этого регистра.


