1*67e74705SXin Li // RUN: %clang_cc1 -Wchar-subscripts -fsyntax-only -verify %s 2*67e74705SXin Li t1()3*67e74705SXin Livoid t1() { 4*67e74705SXin Li int array[1] = { 0 }; 5*67e74705SXin Li char subscript = 0; 6*67e74705SXin Li int val = array[subscript]; // expected-warning{{array subscript is of type 'char'}} 7*67e74705SXin Li } 8*67e74705SXin Li t2()9*67e74705SXin Livoid t2() { 10*67e74705SXin Li int array[1] = { 0 }; 11*67e74705SXin Li char subscript = 0; 12*67e74705SXin Li int val = subscript[array]; // expected-warning{{array subscript is of type 'char'}} 13*67e74705SXin Li } 14*67e74705SXin Li t3()15*67e74705SXin Livoid t3() { 16*67e74705SXin Li int *array = 0; 17*67e74705SXin Li char subscript = 0; 18*67e74705SXin Li int val = array[subscript]; // expected-warning{{array subscript is of type 'char'}} 19*67e74705SXin Li } 20*67e74705SXin Li t4()21*67e74705SXin Livoid t4() { 22*67e74705SXin Li int *array = 0; 23*67e74705SXin Li char subscript = 0; 24*67e74705SXin Li int val = subscript[array]; // expected-warning{{array subscript is of type 'char'}} 25*67e74705SXin Li } 26*67e74705SXin Li 27*67e74705SXin Li char returnsChar(); t5()28*67e74705SXin Livoid t5() { 29*67e74705SXin Li int *array = 0; 30*67e74705SXin Li int val = array[returnsChar()]; // expected-warning{{array subscript is of type 'char'}} 31*67e74705SXin Li } 32*67e74705SXin Li t6()33*67e74705SXin Livoid t6() { 34*67e74705SXin Li int array[1] = { 0 }; 35*67e74705SXin Li signed char subscript = 0; 36*67e74705SXin Li int val = array[subscript]; // no warning for explicit signed char 37*67e74705SXin Li } 38*67e74705SXin Li t7()39*67e74705SXin Livoid t7() { 40*67e74705SXin Li int array[1] = { 0 }; 41*67e74705SXin Li unsigned char subscript = 0; 42*67e74705SXin Li int val = array[subscript]; // no warning for unsigned char 43*67e74705SXin Li } 44*67e74705SXin Li 45*67e74705SXin Li typedef char CharTy; t8()46*67e74705SXin Livoid t8() { 47*67e74705SXin Li int array[1] = { 0 }; 48*67e74705SXin Li CharTy subscript = 0; 49*67e74705SXin Li int val = array[subscript]; // expected-warning{{array subscript is of type 'char'}} 50*67e74705SXin Li } 51*67e74705SXin Li 52*67e74705SXin Li typedef signed char SignedCharTy; t9()53*67e74705SXin Livoid t9() { 54*67e74705SXin Li int array[1] = { 0 }; 55*67e74705SXin Li SignedCharTy subscript = 0; 56*67e74705SXin Li int val = array[subscript]; // no warning for explicit signed char 57*67e74705SXin Li } 58*67e74705SXin Li 59*67e74705SXin Li typedef unsigned char UnsignedCharTy; t10()60*67e74705SXin Livoid t10() { 61*67e74705SXin Li int array[1] = { 0 }; 62*67e74705SXin Li UnsignedCharTy subscript = 0; 63*67e74705SXin Li int val = array[subscript]; // no warning for unsigned char 64*67e74705SXin Li } 65