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).