Там таки явно что-то не то.
Зачем-то большая таблица в ОЗУ
Код
00800060 <__clz_tab>:
800060: 00 01 movw r0, r0
800062: 02 02 muls r16, r18
800064: 03 03 mulsu r16, r19
800066: 03 03 mulsu r16, r19
800068: 04 04 cpc r0, r4
80006a: 04 04 cpc r0, r4
80006c: 04 04 cpc r0, r4
80006e: 04 04 cpc r0, r4
800070: 05 05 cpc r16, r5
800072: 05 05 cpc r16, r5
800074: 05 05 cpc r16, r5
800076: 05 05 cpc r16, r5
800078: 05 05 cpc r16, r5
80007a: 05 05 cpc r16, r5
80007c: 05 05 cpc r16, r5
80007e: 05 05 cpc r16, r5
800080: 06 06 cpc r0, r22
...
80014c: 08 08 sbc r0, r8
80014e: 08 08 sbc r0, r8
800150: 08 08 sbc r0, r8
800152: 08 08 sbc r0, r8
800154: 08 08 sbc r0, r8
800156: 08 08 sbc r0, r8
800158: 08 08 sbc r0, r8
80015a: 08 08 sbc r0, r8
80015c: 08 08 sbc r0, r8
80015e: 08 08 sbc r0, r8
и сам код деления какой-то странный, толи на С писанный, толи совсем непонятно что.
Надо исходники качнуть, глянуть.
upd: Фигушки, это не avr-libc надо смотреть, а libgcc
upd: оййо....
В общем исходнике на libgcc2.c , которій в зависимости от #defin-ов по разному работает и пітается типа оптимизировать скорость проверяя на 0-не0 старшие части и подвызывая другие функции (в комментариях что-то про встроенній асм, но я их вообще не нашёл).
Таблица в .data от того же исходника, она не используется, но и не выбрасывается даже по -Wl,-gc-sections, так как библиотека собрана без -fdata-sections