diff options
Diffstat (limited to 'gcc/c-common.c')
-rw-r--r-- | gcc/c-common.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/gcc/c-common.c b/gcc/c-common.c index 7b27ba0..b843df2 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -6284,4 +6284,20 @@ check_missing_format_attribute (tree ltype, tree rtype) return false; } +/* Subscripting with type char is likely to lose on a machine where + chars are signed. So warn on any machine, but optionally. Don't + warn for unsigned char since that type is safe. Don't warn for + signed char because anyone who uses that must have done so + deliberately. Furthermore, we reduce the false positive load by + warning only for non-constant value of type char. */ + +void +warn_array_subscript_with_type_char (tree index) +{ + if (TYPE_MAIN_VARIANT (TREE_TYPE (index)) == char_type_node + && TREE_CODE (index) != INTEGER_CST) + warning (OPT_Wchar_subscripts, "array subscript has type %<char%>"); +} + + #include "gt-c-common.h" |