public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug inline-asm/65640] New: multiple alternative constraints and earlyclobbers
@ 2015-03-31 14:19 mjh at edg dot com
  0 siblings, 0 replies; only message in thread
From: mjh at edg dot com @ 2015-03-31 14:19 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 65640
           Summary: multiple alternative constraints and earlyclobbers
           Product: gcc
           Version: 4.9.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: inline-asm
          Assignee: unassigned at gcc dot gnu.org
          Reporter: mjh at edg dot com

There seems to be an issue with earlyclobbers and multiple alternative
constraints.  Take this example:

  int f(int out, int in) {
    asm("foo %1,%0;" : "=&a" (out) : "b" (in));        // Okay
    asm("foo %1,%0;" : "=&b" (out) : "b" (in));        // Expected error
    asm("foo %1,%0;" : "=&a" (out) : "a" (in));        // Expected error
    asm("foo %1,%0;" : "=&a,&b" (out) : "b,b" (in));   // Okay
    asm("foo %1,%0;" : "=&a,&b" (out) : "a,a" (in));   // Unexpected error
    asm("foo %1,%0;" : "=&b,&a" (out) : "b,b" (in));   // Okay
    asm("foo %1,%0;" : "=&b,&a" (out) : "a,a" (in));   // Okay
    return out;
  }

With 4.9.2, I see three errors:

$ g++492 -S ex.c
ex.c: In function 'int f(int, int)':
ex.c:3:47: error: 'asm' operand has impossible constraints
     asm("foo %1,%0;" : "=&b" (out) : "b" (in));        // Expected error
                                               ^
ex.c:4:47: error: 'asm' operand has impossible constraints
     asm("foo %1,%0;" : "=&a" (out) : "a" (in));        // Expected error
                                               ^
ex.c:6:52: error: 'asm' operand has impossible constraints
     asm("foo %1,%0;" : "=&a,&b" (out) : "a,a" (in));   // Unexpected error
                                                    ^

The first two are expected, but I'm at a loss to explain the third error.  In
all four of the multi alternative constrain cases, there is exactly one "good"
constraint and one "bad" constraint in the pair, yet only one of the four cases
is diagnosed.

What is the expected behavior for this case?


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2015-03-31 13:45 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-31 14:19 [Bug inline-asm/65640] New: multiple alternative constraints and earlyclobbers mjh at edg dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).