xref: /aosp_15_r20/external/clang/test/CodeGen/dostmt.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
2*67e74705SXin Li 
3*67e74705SXin Li int bar();
test0()4*67e74705SXin Li int test0() {
5*67e74705SXin Li   int i;
6*67e74705SXin Li   i = 1 + 2;
7*67e74705SXin Li   do {
8*67e74705SXin Li     i = bar();
9*67e74705SXin Li     i = bar();
10*67e74705SXin Li   } while(0);
11*67e74705SXin Li   return i;
12*67e74705SXin Li }
13*67e74705SXin Li 
14*67e74705SXin Li 
test1()15*67e74705SXin Li int test1() {
16*67e74705SXin Li   int i;
17*67e74705SXin Li   i = 1 + 2;
18*67e74705SXin Li   do {
19*67e74705SXin Li     i = bar();
20*67e74705SXin Li     if (i == 42)
21*67e74705SXin Li       break;
22*67e74705SXin Li     i = bar();
23*67e74705SXin Li   } while(1);
24*67e74705SXin Li   return i;
25*67e74705SXin Li }
26*67e74705SXin Li 
27*67e74705SXin Li 
test2()28*67e74705SXin Li int test2() {
29*67e74705SXin Li   int i;
30*67e74705SXin Li   i = 1 + 2;
31*67e74705SXin Li   do {
32*67e74705SXin Li     i = bar();
33*67e74705SXin Li     if (i == 42)
34*67e74705SXin Li       continue;
35*67e74705SXin Li     i = bar();
36*67e74705SXin Li   } while(1);
37*67e74705SXin Li   return i;
38*67e74705SXin Li }
39*67e74705SXin Li 
40*67e74705SXin Li 
test3()41*67e74705SXin Li int test3() {
42*67e74705SXin Li   int i;
43*67e74705SXin Li   i = 1 + 2;
44*67e74705SXin Li   do {
45*67e74705SXin Li     i = bar();
46*67e74705SXin Li     if (i == 42)
47*67e74705SXin Li       break;
48*67e74705SXin Li   } while(0);
49*67e74705SXin Li   return i;
50*67e74705SXin Li }
51*67e74705SXin Li 
52*67e74705SXin Li 
test4()53*67e74705SXin Li int test4() {
54*67e74705SXin Li   int i;
55*67e74705SXin Li   i = 1 + 2;
56*67e74705SXin Li   do {
57*67e74705SXin Li     i = bar();
58*67e74705SXin Li     if (i == 42)
59*67e74705SXin Li       continue;
60*67e74705SXin Li   } while(0);
61*67e74705SXin Li   return i;
62*67e74705SXin Li }
63*67e74705SXin Li 
64*67e74705SXin Li // rdar://6103124
test5()65*67e74705SXin Li void test5() {
66*67e74705SXin Li   do { break; } while(0);
67*67e74705SXin Li }
68*67e74705SXin Li 
69*67e74705SXin Li // PR14191
70*67e74705SXin Li void test6f(void);
test6()71*67e74705SXin Li void test6() {
72*67e74705SXin Li   do {
73*67e74705SXin Li   } while (test6f(), 0);
74*67e74705SXin Li   // CHECK: call {{.*}}void @test6f()
75*67e74705SXin Li }
76*67e74705SXin Li 
77