Прежде всего, эта функция НЕ устарела, потому что «регистр» в этом контексте (глобальные или локальные переменные регистра) является расширением GNU, которое не устарело.
В вашем примере R10 (или регистр, который G CC внутренне присваивает REGNO (reg) = 10), является глобальным регистром. «глобальный» здесь означает, что весь код в вашем приложении должен согласовывать это использование. Обычно это не относится к коду из библиотек, таких как lib c, libm или libg cc, потому что они не скомпилированы с -ffixed-10. Более того, глобальные регистры могут конфликтовать с ABI. Например, avr-g cc может передавать значения в R10. В avr-g cc, R2 ... R9 не используются ABI, а не кодом из libg cc (кроме 64-битного двойного).
В некоторых жестких приложениях реального времени с avr-g cc я использовал глобальные регистры в (преждевременной) оптимизации, просто чтобы заметить, что прирост производительности был минимальным.
Однако локальные переменные регистра очень удобны, когда дело доходит до интеграции не-ABI-функций, например, функций сборки, которые не соответствуют G CC ABI, без необходимости в обертках сборки.