1*443b46e6Seinvbri // RUN: %clang_analyze_cc1 -ffixed-point \ 2*443b46e6Seinvbri // RUN: -analyzer-checker=core,debug.ExprInspection -verify %s 3*443b46e6Seinvbri 4*443b46e6Seinvbri // expected-no-diagnostics 5*443b46e6Seinvbri 6*443b46e6Seinvbri // Check that getAPSIntType does not crash 7*443b46e6Seinvbri // when using fixed point types. 8*443b46e6Seinvbri 9*443b46e6Seinvbri enum Kind { en_0 = 1 }; 10*443b46e6Seinvbri _enum(int c)11*443b46e6Seinvbrivoid _enum(int c) { 12*443b46e6Seinvbri (void)((enum Kind) c >> 4); 13*443b46e6Seinvbri } 14*443b46e6Seinvbri _inttype(int c)15*443b46e6Seinvbrivoid _inttype(int c) { 16*443b46e6Seinvbri (void)(c >> 4); 17*443b46e6Seinvbri } 18*443b46e6Seinvbri _accum(int c)19*443b46e6Seinvbrivoid _accum(int c) { 20*443b46e6Seinvbri (void)((_Accum) c >> 4); 21*443b46e6Seinvbri } 22*443b46e6Seinvbri _fract(int c)23*443b46e6Seinvbrivoid _fract(int c) { 24*443b46e6Seinvbri (void)((_Fract) c >> 4); 25*443b46e6Seinvbri } 26*443b46e6Seinvbri _long_fract(int c)27*443b46e6Seinvbrivoid _long_fract(int c) { 28*443b46e6Seinvbri (void)((long _Fract) c >> 4); 29*443b46e6Seinvbri } 30*443b46e6Seinvbri _unsigned_accum(int c)31*443b46e6Seinvbrivoid _unsigned_accum(int c) { 32*443b46e6Seinvbri (void)((unsigned _Accum) c >> 4); 33*443b46e6Seinvbri } 34*443b46e6Seinvbri _short_unsigned_accum(int c)35*443b46e6Seinvbrivoid _short_unsigned_accum(int c) { 36*443b46e6Seinvbri (void)((short unsigned _Accum) c >> 4); 37*443b46e6Seinvbri } 38*443b46e6Seinvbri _unsigned_fract(int c)39*443b46e6Seinvbrivoid _unsigned_fract(int c) { 40*443b46e6Seinvbri (void)((unsigned _Fract) c >> 4); 41*443b46e6Seinvbri } 42*443b46e6Seinvbri sat_accum(int c)43*443b46e6Seinvbrivoid sat_accum(int c) { 44*443b46e6Seinvbri (void)((_Sat _Accum) c >> 4); 45*443b46e6Seinvbri } 46*443b46e6Seinvbri sat_fract(int c)47*443b46e6Seinvbrivoid sat_fract(int c) { 48*443b46e6Seinvbri (void)((_Sat _Fract) c >> 4); 49*443b46e6Seinvbri } 50*443b46e6Seinvbri sat_long_fract(int c)51*443b46e6Seinvbrivoid sat_long_fract(int c) { 52*443b46e6Seinvbri (void)((_Sat long _Fract) c >> 4); 53*443b46e6Seinvbri } 54*443b46e6Seinvbri sat_unsigned_accum(int c)55*443b46e6Seinvbrivoid sat_unsigned_accum(int c) { 56*443b46e6Seinvbri (void)((_Sat unsigned _Accum) c >> 4); 57*443b46e6Seinvbri } 58*443b46e6Seinvbri sat_short_unsigned_accum(int c)59*443b46e6Seinvbrivoid sat_short_unsigned_accum(int c) { 60*443b46e6Seinvbri (void)((_Sat short unsigned _Accum) c >> 4); 61*443b46e6Seinvbri } 62*443b46e6Seinvbri sat_unsigned_fract(int c)63*443b46e6Seinvbrivoid sat_unsigned_fract(int c) { 64*443b46e6Seinvbri (void)((_Sat unsigned _Fract) c >> 4); 65*443b46e6Seinvbri } 66