xref: /llvm-project/llvm/test/tools/llvm-cov/Inputs/mcdc-const-folding.cpp (revision ae36790be4a2a6c9dc8900f659c861647cab66d5)
1 #include <stdlib.h>
2 
case0(bool a)3 bool case0(bool a) {
4     return 0 && a;
5 }
case1(bool a)6 bool case1(bool a) {
7     return a && 0;
8 }
case2(bool a)9 bool case2(bool a) {
10     return 1 && a;
11 }
case3(bool a)12 bool case3(bool a) {
13     return a && 1;
14 }
case4(bool a)15 bool case4(bool a) {
16     return 1 || a;
17 }
case5(bool a)18 bool case5(bool a) {
19     return a || 1;
20 }
case6(bool a)21 bool case6(bool a) {
22     return 0 || a;
23 }
case7(bool a)24 bool case7(bool a) {
25     return a || 0;
26 }
27 
case8(bool a,bool b)28 bool case8(bool a, bool b) {
29     return 0 && a && b;
30 }
case9(bool a,bool b)31 bool case9(bool a, bool b) {
32     return a && 0 && b;
33 }
casea(bool a,bool b)34 bool casea(bool a, bool b) {
35     return 1 && a && b;
36 }
caseb(bool a,bool b)37 bool caseb(bool a, bool b) {
38     return a && 1 && b;
39 }
casec(bool a,bool b)40 bool casec(bool a, bool b) {
41     return 1 || a || b;
42 }
cased(bool a,bool b)43 bool cased(bool a, bool b) {
44     return a || 1 || b;
45 }
casee(bool a,bool b)46 bool casee(bool a, bool b) {
47     return 0 || a || b;
48 }
casef(bool a,bool b)49 bool casef(bool a, bool b) {
50     return a || 0 || b;
51 }
52 
caseg(bool a,bool b)53 bool caseg(bool a, bool b) {
54     return b && a && 0;
55 }
caseh(bool a,bool b)56 bool caseh(bool a, bool b) {
57     return b && 0 && a;
58 }
casei(bool a,bool b)59 bool casei(bool a, bool b) {
60     return b && a && 1;
61 }
casej(bool a,bool b)62 bool casej(bool a, bool b) {
63     return b && 1 && a;
64 }
casek(bool a,bool b)65 bool casek(bool a, bool b) {
66     return b || a || 1;
67 }
casel(bool a,bool b)68 bool casel(bool a, bool b) {
69     return b || 1 || a;
70 }
casem(bool a,bool b)71 bool casem(bool a, bool b) {
72     return b || a || 0;
73 }
casen(bool a,bool b)74 bool casen(bool a, bool b) {
75     return b || 0 || a;
76 }
77 
main(int argc,char * argv[])78 int main(int argc, char *argv[])
79 {
80     bool a = atoi(argv[1]);
81     bool b = atoi(argv[2]);
82     volatile bool c;
83 
84     c = case0(a);
85     c = case1(a);
86     c = case2(a);
87     c = case3(a);
88     c = case4(a);
89     c = case5(a);
90     c = case6(a);
91     c = case7(a);
92 
93     c = case8(a, b);
94     c = case9(a, b);
95     c = casea(a, b);
96     c = caseb(a, b);
97     c = casec(a, b);
98     c = cased(a, b);
99     c = casee(a, b);
100     c = casef(a, b);
101 
102     c = caseg(a, b);
103     c = caseh(a, b);
104     c = casei(a, b);
105     c = casej(a, b);
106     c = casek(a, b);
107     c = casel(a, b);
108     c = casem(a, b);
109     c = casen(a, b);
110 
111     return 0;
112 }
113