Looks like GCC is generating code more efficiently than the code in the avr-libc library, at least in this case (isdigit from
if (isdigit(uart_tmp)) 40c: 48 2f mov r20, r24 40e: 50 e0 ldi r21, 0x00 ; 0 410: ca 01 movw r24, r20 412: c0 97 sbiw r24, 0x30 ; 48 414: 0a 97 sbiw r24, 0x0a ; 10 416: 08 f0 brcs .+2 ; 0x41a418: 92 c0 rjmp .+292 ; 0x53e <__stack+0x3f> 40c: 48 2f mov r20, r24 // only if it is a number if ((uart_tmp >='0') && (uart_tmp <= '9')) 40e: 80 53 subi r24, 0x30 ; 48 410: 8a 30 cpi r24, 0x0A ; 10 412: 08 f0 brcs .+2 ; 0x416 414: 92 c0 rjmp .+292 ; 0x53a <__stack+0x3b>