https://sourceware.org/bugzilla/show_bug.cgi?id=21621
Bug ID: 21621 Summary: [avr] Wrong / missing warning "skipping two-word instruction" Product: binutils Version: 2.29 (HEAD) Status: NEW Severity: minor Priority: P2 Component: gas Assignee: unassigned at sourceware dot org Reporter: gjl at gcc dot gnu.org Target Milestone: --- $ avr-as frag.s -o frag.o && avr-objdump -d frag.o == frag.s == .text cpse 0,0 .subsection 1 lds 0,0 .previous clc .text cpse 1,1 .subsection 1 sec .previous lds 1,1 == gas output == frag.s: Assembler messages: frag.s:4: Warning: skipping two-word instruction The first snip should *not* issue a skip warning whereas the second one *should* issue one for the last line. Due to the .subsection, the insn following CPSE in the source is not the one which is skipped. FYI, objdump's ouput is: 00000000 <.text>: 0: 00 10 cpse r0, r0 2: 88 94 clc 4: 11 10 cpse r1, r1 6: 10 90 01 00 lds r1, 0x0001 ; 0x800001 a: 00 90 00 00 lds r0, 0x0000 ; 0x800000 e: 08 94 sec The problem is in tc-avr.c::avr_operands() which holds static state on previous opcode in "prev". However, this state should go into the current fragment's target-specific info in .tc_frag_data. (The right place would actually be the respective fragment chain, not the fragment itself, but the chain doesn't allow to add target-specific extensions whereas struct frag does.) -- You are receiving this mail because: You are on the CC list for the bug. _______________________________________________ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils