I'm using Atmel Studio 6, including the latest patches.
avr-gcc --version gives:
avr-gcc.exe (AVR_8_bit_GNU_Toolchain_3.3.0_364) 4.5.1 Copyright (C) 2010 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
The .lss file contains some lines like this:
3ee0: 8b e7 ldi r24, 0x7B ; 123 3ee2: 92 e9 ldi r25, 0x92 ; 146 3ee4: 86 a3 lds r24, 0x56 3ee6: 97 a3 lds r25, 0x57
However, the Atmel Studio 6 disassembly shows:
00001F70 LDI R24,0x7B Load immediate 00001F71 LDI R25,0x92 Load immediate 00001F72 STD Z+38,R24 Store indirect with displacement 00001F73 STD Z+39,R25 Store indirect with displacement
I looked through the AVR Instruction Set Manual and I believe that the STD Z is the correct interpretation of those bytes. This is backed up by the fact that an LDS on those two registers after loading data into them (with LDI) doesn't make sense.
Is this a known bug? I did a search of the forum but didn't find anything related.
EDIT: I'd like to be clear that the program is working as expected. Just the .lss file doesn't display the correct mnemonics for the emitted opcodes.