http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33049

Georg-Johann Lay <gjl at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |gjl at gcc dot gnu.org

--- Comment #14 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2011-05-30 
14:33:31 UTC ---
(In reply to comment #13)
> Yep it looks a lot better now.
> The if statements could be optimized into the equivalent shift instructions 
> but
> that is not a AVR backend problem I guess.

Shifting generally is more expensive instead of bit extracting; at least if the
bit offset is known at compile time.

> I noticed that the disassembly shows wrong lengths for some outputs of extzv.
> Is that a problem?

It's not a problem if the sequence actually printed is not greater than the
instruction length reported. If the reported instruction length was strinct
greater, an assembler error could occur because relative jump offets migh be
out of scope.

The only case where the instruction length is smaller than reported is if
IN_REG=OUT_REG and BITPOS=4 (sequence is swap + andi 1). The instruction length
for lsr + andi 1 (IN_REG=OUT_REG, BITPOS=1) is already corrected in the patch.

Reply via email to