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

            Bug ID: 95714
           Summary: Poor locations for errors in calls to __atomic
                    built-ins
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Keywords: diagnostic
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: redi at gcc dot gnu.org
  Target Milestone: ---

int main()
{
  char c;
  int i;
  __atomic_load(&c, &i, __ATOMIC_SEQ_CST);
}

The C compiler says:

ab.cc: In function 'main':
ab.cc:5:3: error: size mismatch in argument 2 of '__atomic_load'
    5 |   __atomic_load(&c, &i, __ATOMIC_SEQ_CST);
      |   ^~~~~~~~~~~~~


and the C++ compiler says:

ab.cc: In function 'int main()':
ab.cc:5:41: error: size mismatch in argument 2 of '__atomic_load'
    5 |   __atomic_load(&c, &i, __ATOMIC_SEQ_CST);
      |                                         ^


Both are poor. Instead of saying "argument 2" and highlighting the function
name or the end of the argument list, we should highlight the relevant
argument:

ab.cc: In function 'main':
ab.cc:5:3: error: size mismatch in argument 2 of '__atomic_load'
    5 |   __atomic_load(&c, &i, __ATOMIC_SEQ_CST);
      |                     ^~


Even better would be:

ab.cc: In function 'main':
ab.cc:5:3: error: size mismatch in argument 2 of '__atomic_load'
    5 |   __atomic_load(&c, &i, __ATOMIC_SEQ_CST);
      |                 ^~  ^~
      |                 |   |
      |                 |   int*
      |                 char*

Reply via email to