http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52381
Bug #: 52381
Summary: asm goto output operands
Classification: Unclassified
Product: gcc
Version: 4.7.0
Status: UNCONFIRMED
Severity: enhancement
Priority: P3
Component: c
AssignedTo: [email protected]
ReportedBy: [email protected]
Hello,
asm goto doesn't allow output operands (this is documented). I haven't found an
enhancement request about it, but I think it is obvious that it is wanted. What
I would like to ask in the meantime is for a more specific error message than:
ex.c: In function 'h':
ex.c:4:42: error: expected ':' before string constant
or in the case of g++:
ex.cc: In function 'void h(int)':
ex.cc:4:42: error: expected ':' or '::' before string constant
ex.cc:4:74: error: undefined named operand 'g_'
Something like: "asm goto doesn't allow output operands" would be great. It
took me a while to understand what was wrong by reading the doc, even with the
nice column indication.
silly example (yes, the contraints don't make sense, it doesn't matter) that
gave the messages above:
void f(int);
void g();
void h(int i){
asm goto( "cmpl %1, %0\n\tje %l[g_]" : "+g" (i) : "i" (42) : "cc" : g_);
return f(i);
g_:
return g();
}