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

            Bug ID: 92392
           Summary: -Wignored-qualifiers points to diff location
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: tangyixuan at mail dot dlut.edu.cn
  Target Milestone: ---

The column of -Wignored-qualifiers warnings are different and not precise for
the two similar codes:
$: cat s.c

typedef int int32_t;
static int32_t * const f1(void);

$: gcc-trunk -c -Wignored-qualifiers s.c
s.c:2:8: warning: type qualifiers ignored on function return type
[-Wignored-qualifiers]
    2 | static int32_t * const f1(void);
       |            ^~~~~~~

$: cat s1.c

static int * const f1(void);

$: gcc-trunk -c -Wignored-qualifiers s1.c
s1.c:1:20: warning: type qualifiers ignored on function return type
[-Wignored-qualifiers]
    1 | static int * const f1(void);
       |                               ^~

[-Wignored-qualifiers] warns if the return type of a function has a type
qualifier such as const. So, the warning that points out the 'const' type
qualifier would be better.

clang can point out the correct column of const:
$: clang -c -Wignored-qualifiers s.c
s.c:2:18: warning: 'const' type qualifier on return type has no effect
      [-Wignored-qualifiers]
static int32_t * const f1(void);
                           ^~~~~~

Reply via email to