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: unassig...@gcc.gnu.org
        ReportedBy: marc.gli...@normalesup.org


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();
}

Reply via email to