1*b98a0c7fSRoman Lebedev // RUN: %clang_cc1 -fsanitize=implicit-unsigned-integer-truncation -fsanitize-recover=implicit-unsigned-integer-truncation -emit-llvm %s -o - -triple x86_64-linux-gnu | FileCheck %s -implicit-check-not="call void @__ubsan_handle_implicit_conversion" --check-prefixes=CHECK 2*b98a0c7fSRoman Lebedev 3*b98a0c7fSRoman Lebedev // CHECK-LABEL: @t0( t0(unsigned short x)4*b98a0c7fSRoman Lebedevunsigned short t0(unsigned short x) { 5*b98a0c7fSRoman Lebedev #line 100 6*b98a0c7fSRoman Lebedev x++; 7*b98a0c7fSRoman Lebedev return x; 8*b98a0c7fSRoman Lebedev } 9*b98a0c7fSRoman Lebedev // CHECK-LABEL: @t1( t1(unsigned short x)10*b98a0c7fSRoman Lebedevunsigned short t1(unsigned short x) { 11*b98a0c7fSRoman Lebedev #line 200 12*b98a0c7fSRoman Lebedev x--; 13*b98a0c7fSRoman Lebedev return x; 14*b98a0c7fSRoman Lebedev } 15*b98a0c7fSRoman Lebedev // CHECK-LABEL: @t2( t2(unsigned short x)16*b98a0c7fSRoman Lebedevunsigned short t2(unsigned short x) { 17*b98a0c7fSRoman Lebedev #line 300 18*b98a0c7fSRoman Lebedev ++x; 19*b98a0c7fSRoman Lebedev return x; 20*b98a0c7fSRoman Lebedev } 21*b98a0c7fSRoman Lebedev // CHECK-LABEL: @t3( t3(unsigned short x)22*b98a0c7fSRoman Lebedevunsigned short t3(unsigned short x) { 23*b98a0c7fSRoman Lebedev #line 400 24*b98a0c7fSRoman Lebedev --x; 25*b98a0c7fSRoman Lebedev return x; 26*b98a0c7fSRoman Lebedev } 27*b98a0c7fSRoman Lebedev 28*b98a0c7fSRoman Lebedev // CHECK-LABEL: @t4( t4(signed short x)29*b98a0c7fSRoman Lebedevsigned short t4(signed short x) { 30*b98a0c7fSRoman Lebedev #line 500 31*b98a0c7fSRoman Lebedev x++; 32*b98a0c7fSRoman Lebedev return x; 33*b98a0c7fSRoman Lebedev } 34*b98a0c7fSRoman Lebedev // CHECK-LABEL: @t5( t5(signed short x)35*b98a0c7fSRoman Lebedevsigned short t5(signed short x) { 36*b98a0c7fSRoman Lebedev #line 600 37*b98a0c7fSRoman Lebedev x--; 38*b98a0c7fSRoman Lebedev return x; 39*b98a0c7fSRoman Lebedev } 40*b98a0c7fSRoman Lebedev // CHECK-LABEL: @t6( t6(signed short x)41*b98a0c7fSRoman Lebedevsigned short t6(signed short x) { 42*b98a0c7fSRoman Lebedev #line 700 43*b98a0c7fSRoman Lebedev ++x; 44*b98a0c7fSRoman Lebedev return x; 45*b98a0c7fSRoman Lebedev } 46*b98a0c7fSRoman Lebedev // CHECK-LABEL: @t7( t7(signed short x)47*b98a0c7fSRoman Lebedevsigned short t7(signed short x) { 48*b98a0c7fSRoman Lebedev #line 800 49*b98a0c7fSRoman Lebedev --x; 50*b98a0c7fSRoman Lebedev return x; 51*b98a0c7fSRoman Lebedev } 52*b98a0c7fSRoman Lebedev 53*b98a0c7fSRoman Lebedev // CHECK-LABEL: @t8( t8(unsigned char x)54*b98a0c7fSRoman Lebedevunsigned char t8(unsigned char x) { 55*b98a0c7fSRoman Lebedev #line 900 56*b98a0c7fSRoman Lebedev x++; 57*b98a0c7fSRoman Lebedev return x; 58*b98a0c7fSRoman Lebedev } 59*b98a0c7fSRoman Lebedev // CHECK-LABEL: @t9( t9(unsigned char x)60*b98a0c7fSRoman Lebedevunsigned char t9(unsigned char x) { 61*b98a0c7fSRoman Lebedev #line 1000 62*b98a0c7fSRoman Lebedev x--; 63*b98a0c7fSRoman Lebedev return x; 64*b98a0c7fSRoman Lebedev } 65*b98a0c7fSRoman Lebedev // CHECK-LABEL: @t10( t10(unsigned char x)66*b98a0c7fSRoman Lebedevunsigned char t10(unsigned char x) { 67*b98a0c7fSRoman Lebedev #line 1100 68*b98a0c7fSRoman Lebedev ++x; 69*b98a0c7fSRoman Lebedev return x; 70*b98a0c7fSRoman Lebedev } 71*b98a0c7fSRoman Lebedev // CHECK-LABEL: @t11( t11(unsigned char x)72*b98a0c7fSRoman Lebedevunsigned char t11(unsigned char x) { 73*b98a0c7fSRoman Lebedev #line 1200 74*b98a0c7fSRoman Lebedev --x; 75*b98a0c7fSRoman Lebedev return x; 76*b98a0c7fSRoman Lebedev } 77*b98a0c7fSRoman Lebedev 78*b98a0c7fSRoman Lebedev // CHECK-LABEL: @t12( t12(signed char x)79*b98a0c7fSRoman Lebedevsigned char t12(signed char x) { 80*b98a0c7fSRoman Lebedev #line 1300 81*b98a0c7fSRoman Lebedev x++; 82*b98a0c7fSRoman Lebedev return x; 83*b98a0c7fSRoman Lebedev } 84*b98a0c7fSRoman Lebedev // CHECK-LABEL: @t13( t13(signed char x)85*b98a0c7fSRoman Lebedevsigned char t13(signed char x) { 86*b98a0c7fSRoman Lebedev #line 1400 87*b98a0c7fSRoman Lebedev x--; 88*b98a0c7fSRoman Lebedev return x; 89*b98a0c7fSRoman Lebedev } 90*b98a0c7fSRoman Lebedev // CHECK-LABEL: @t14( t14(signed char x)91*b98a0c7fSRoman Lebedevsigned char t14(signed char x) { 92*b98a0c7fSRoman Lebedev #line 1500 93*b98a0c7fSRoman Lebedev ++x; 94*b98a0c7fSRoman Lebedev return x; 95*b98a0c7fSRoman Lebedev } 96*b98a0c7fSRoman Lebedev // CHECK-LABEL: @t15( t15(signed char x)97*b98a0c7fSRoman Lebedevsigned char t15(signed char x) { 98*b98a0c7fSRoman Lebedev #line 1600 99*b98a0c7fSRoman Lebedev --x; 100*b98a0c7fSRoman Lebedev return x; 101*b98a0c7fSRoman Lebedev } 102