xref: /llvm-project/clang/test/CodeGen/catch-implicit-unsigned-integer-truncations-incdec-basics.c (revision b98a0c7f6c9c7b38b6cd764e6f47e16e3d8c342c)
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 Lebedev unsigned 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 Lebedev unsigned 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 Lebedev unsigned 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 Lebedev unsigned 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 Lebedev signed 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 Lebedev signed 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 Lebedev signed 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 Lebedev signed 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 Lebedev unsigned 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 Lebedev unsigned 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 Lebedev unsigned 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 Lebedev unsigned 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 Lebedev signed 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 Lebedev signed 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 Lebedev signed 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 Lebedev signed char t15(signed char x) {
98*b98a0c7fSRoman Lebedev #line 1600
99*b98a0c7fSRoman Lebedev   --x;
100*b98a0c7fSRoman Lebedev   return x;
101*b98a0c7fSRoman Lebedev }
102