|
From: | David Kopf |
Subject: | [avr-gcc-list] Bug with -Os with constant multiplier of 3? |
Date: | Tue, 21 Dec 2010 10:01:32 -0500 |
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>
[Prev in Thread] | Current Thread | [Next in Thread] |