[Top][All Lists]

[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


            Bug ID: 21621
           Summary: [avr] Wrong / missing warning "skipping two-word
           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 ==

    cpse 0,0
.subsection 1
    lds 0,0

    cpse 1,1
.subsection 1
    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.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]