[clang] Remove warnings from -Wchar-subscripts for known positive constants (PR #69061)
Aaron Ballman via cfe-commits
cfe-commits at lists.llvm.org
Thu Nov 2 09:46:47 PDT 2023
================
@@ -0,0 +1,103 @@
+// RUN: %clang_cc1 -Wchar-subscripts -fsyntax-only -verify %s
+
+void t1(void) {
+ int array[1] = { 0 };
+ char subscript = 0;
+ int val = array[subscript]; // expected-warning{{array subscript is of type 'char'}}
+}
+
+void t2(void) {
+ int array[1] = { 0 };
+ char subscript = 0;
+ int val = subscript[array]; // expected-warning{{array subscript is of type 'char'}}
+}
+
+void t3(void) {
+ int *array = 0;
+ char subscript = 0;
+ int val = array[subscript]; // expected-warning{{array subscript is of type 'char'}}
+}
+
+void t4(void) {
+ int *array = 0;
+ char subscript = 0;
+ int val = subscript[array]; // expected-warning{{array subscript is of type 'char'}}
+}
+
+char returnsChar(void);
+void t5(void) {
+ int *array = 0;
+ int val = array[returnsChar()]; // expected-warning{{array subscript is of type 'char'}}
+}
+
+void t6(void) {
+ int array[1] = { 0 };
+ signed char subscript = 0;
+ int val = array[subscript]; // no warning for explicit signed char
----------------
AaronBallman wrote:
We rule out explicitly signed or explicitly unsigned `char` type because of `int8_t` and `uint8_t` because those are pretty reasonable to use as array indexes.
https://github.com/llvm/llvm-project/pull/69061
More information about the cfe-commits
mailing list