[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug gas/21621] New: [avr] Wrong / missing warning "skipping two-word in
From: |
gjl at gcc dot gnu.org |
Subject: |
[Bug gas/21621] New: [avr] Wrong / missing warning "skipping two-word instruction" |
Date: |
Mon, 19 Jun 2017 13:52:35 +0000 |
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 gas/21621] New: [avr] Wrong / missing warning "skipping two-word instruction",
gjl at gcc dot gnu.org <=