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

Martin Sebor <msebor at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
                 CC|                            |msebor at gcc dot gnu.org
           See Also|                            |https://gcc.gnu.org/bugzill
                   |                            |a/show_bug.cgi?id=78155
   Last reconfirmed|                            |2021-04-07
           Severity|normal                      |enhancement
             Status|UNCONFIRMED                 |NEW

--- Comment #2 from Martin Sebor <msebor at gcc dot gnu.org> ---
Adding a note after the warning suggesting to cast the argument to unsigned
char would help.  Enabling the warning also when the char argument is cast to a
wider type might also be worth considering.  See also pr78155 for a related
request to enable the warning for calls to the character classification
built-ins.

$ cat pr99950.c && gcc -O2 -S -Wall -Wchar-subscripts pr99950.c
extern int a[255];

int f (char c)
{
  return a[c];                   // -Wchar-subscripts
}

int g (char c)
{
  return a[(int)c];              // same bug, no warning
}
pr99950.c: In function ‘f’:
pr99950.c:5:11: warning: array subscript has type ‘char’ [-Wchar-subscripts]
    5 |   return a[c];                   // -Wchar-subscripts
      |           ^

Reply via email to