https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110058

            Bug ID: 110058
           Summary: confusing error message for %c asm output modifier
           Product: gcc
           Version: 4.8.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: sch...@linux-m68k.org
                CC: uros at gcc dot gnu.org
  Target Milestone: ---
            Target: i*86-*-* x86_64-*-*

'c' is both a generic modifier (for operands that are constants) and a x86
specific modifier (for operands that are condition codes).  If used with an
operand that is neither a CONSTANT_ADDRESS_P nor a COMPARISON_P, the x86
backend prints a confusing error message.

$ echo 'void f() { asm ("%c0" :: "i"("")); }' | gcc -mcmodel=large -xc - -S
<stdin>: In function ‘f’:
<stdin>:1:12: error: invalid 'asm': operand is not a condition code, invalid
operand code 'c'

Before r0-116930-gf1ea1f5c047c3e, the error message also mentioned that a
constant is acceptable.

Reply via email to