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

            Bug ID: 106154
           Summary: Error when missing a : inside an inline-asm could be
                    improved
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Keywords: diagnostic, inline-asm
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: pinskia at gcc dot gnu.org
  Target Milestone: ---

Take:
```
void f(void)
{
    __asm__(""::"memory");
}
```
I forgot there should be 3 : and the error message for this should be improved.
Currently it is:
```
<source>: In function 'f':
<source>:3:25: error: expected '(' before ')' token
    3 |     __asm__(""::"memory");
      |                         ^
      |                         (
```
I was like what does that even mean and then I remembered there is output,
input and clobber for the asm statement.

Note both the C and C++ front-ends have the same issue and produce the same
error message.

Well C++ produces some extra ones error messages:
```
<source>:3:25: error: expected primary-expression before ')' token
<source>:3:26: error: expected ')' before ';' token
    3 |     __asm__(""::"memory");
      |                          ^
      |                          )
```

clang is not only slightly better:
```
<source>:3:25: error: expected '(' after 'asm operand'
    __asm__(""::"memory");
                        ^
```

Reply via email to