Hi,

Using WinAVR avr-gcc 4.3.0 and 4.3.3, compiling 3*<uint8_t> with -Os calls __mulhi3 instead of the optimized *2+1 when no hardware multiply is present. O1,O2,O3 does it right:

Target: ATTiny85

uint8_t rssi;  //r24
-O1 -O2 -O3
rssi=3*rssi;
   aa: 28 2f        mov r18, r24
   ac: 22 0f        add r18, r18
   ae: 28 0f        add r18, r24


-Os
rssi=3*rssi;
   ae: 90 e0        ldi r25, 0x00 ; 0
   b0: 63 e0        ldi r22, 0x03 ; 3
   b2: 70 e0        ldi r23, 0x00 ; 0
   b4: 40 d0        rcall .+128     ; 0x136<__mulhi3>




_______________________________________________
AVR-GCC-list mailing list
AVR-GCC-list@nongnu.org
http://lists.nongnu.org/mailman/listinfo/avr-gcc-list

Reply via email to