xref: /llvm-project/llvm/test/tools/llvm-cov/Inputs/branch-logical-mixed.cpp (revision 275a27703ec9100a4984d1d0a366d50d3dc887ea)
11c25a3bfSNAKAMURA Takumi 
21c25a3bfSNAKAMURA Takumi 
31c25a3bfSNAKAMURA Takumi 
41c25a3bfSNAKAMURA Takumi 
51c25a3bfSNAKAMURA Takumi #include <stdio.h>
61c25a3bfSNAKAMURA Takumi #include <stdlib.h>
7*275a2770SNAKAMURA Takumi // CHECK: | [[#min(C,4)]]|void func(
81c25a3bfSNAKAMURA Takumi void func(int a, int b) {
91c25a3bfSNAKAMURA Takumi   bool b0 = a <= b;
101c25a3bfSNAKAMURA Takumi   bool b1 = a == b;
111c25a3bfSNAKAMURA Takumi   bool b2 = a >= b;
121c25a3bfSNAKAMURA Takumi   bool b3 = a < b;
131c25a3bfSNAKAMURA Takumi   bool b4 = a > b;
141c25a3bfSNAKAMURA Takumi   bool b5 = a != b;
151c25a3bfSNAKAMURA Takumi 
161c25a3bfSNAKAMURA Takumi   bool c = b0 &&           // BRCOV: Branch ([[@LINE]]:12): [True: [[#min(C,3)]], False: 1]
171c25a3bfSNAKAMURA Takumi            b1 &&           // BRCOV: Branch ([[@LINE]]:12): [True: [[#min(C,2)]], False: 1]
181c25a3bfSNAKAMURA Takumi            b2 &&           // BRCOV: Branch ([[@LINE]]:12): [True: [[#min(C,2)]], False: 0]
191c25a3bfSNAKAMURA Takumi            b3 &&           // BRCOV: Branch ([[@LINE]]:12): [True: 0, False: [[#min(C,2)]]]
201c25a3bfSNAKAMURA Takumi            b4 &&           // BRCOV: Branch ([[@LINE]]:12): [True: 0, False: 0]
211c25a3bfSNAKAMURA Takumi            b5;             // BRCOV: Branch ([[@LINE]]:12): [True: 0, False: 0]
221c25a3bfSNAKAMURA Takumi 
231c25a3bfSNAKAMURA Takumi   bool d = b0 ||           // BRCOV: Branch ([[@LINE]]:12): [True: [[#min(C,3)]], False: 1]
241c25a3bfSNAKAMURA Takumi            b1 ||           // BRCOV: Branch ([[@LINE]]:12): [True: 0, False: 1]
251c25a3bfSNAKAMURA Takumi            b2 ||           // BRCOV: Branch ([[@LINE]]:12): [True: 1, False: 0]
261c25a3bfSNAKAMURA Takumi            b3 ||           // BRCOV: Branch ([[@LINE]]:12): [True: 0, False: 0]
271c25a3bfSNAKAMURA Takumi            b4 ||           // BRCOV: Branch ([[@LINE]]:12): [True: 0, False: 0]
281c25a3bfSNAKAMURA Takumi            b5;             // BRCOV: Branch ([[@LINE]]:12): [True: 0, False: 0]
291c25a3bfSNAKAMURA Takumi 
301c25a3bfSNAKAMURA Takumi   bool e = (b0  &&         // BRCOV: Branch ([[@LINE]]:13): [True: [[#min(C,3)]], False: 1]
311c25a3bfSNAKAMURA Takumi             b5) ||         // BRCOV: Branch ([[@LINE]]:13): [True: 1, False: [[#min(C,2)]]]
321c25a3bfSNAKAMURA Takumi            (b1  &&         // BRCOV: Branch ([[@LINE]]:13): [True: [[#min(C,2)]], False: 1]
331c25a3bfSNAKAMURA Takumi             b4) ||         // BRCOV: Branch ([[@LINE]]:13): [True: 0, False: [[#min(C,2)]]]
341c25a3bfSNAKAMURA Takumi            (b2  &&         // BRCOV: Branch ([[@LINE]]:13): [True: [[#min(C,3)]], False: 0]
351c25a3bfSNAKAMURA Takumi             b3) ||         // BRCOV: Branch ([[@LINE]]:13): [True: 0, False: [[#min(C,3)]]]
361c25a3bfSNAKAMURA Takumi            (b3  &&         // BRCOV: Branch ([[@LINE]]:13): [True: 0, False: [[#min(C,3)]]]
371c25a3bfSNAKAMURA Takumi             b2) ||         // BRCOV: Branch ([[@LINE]]:13): [True: 0, False: 0]
381c25a3bfSNAKAMURA Takumi            (b4  &&         // BRCOV: Branch ([[@LINE]]:13): [True: 1, False: [[#min(C,2)]]]
391c25a3bfSNAKAMURA Takumi             b1) ||         // BRCOV: Branch ([[@LINE]]:13): [True: 0, False: 1]
401c25a3bfSNAKAMURA Takumi            (b5  &&         // BRCOV: Branch ([[@LINE]]:13): [True: 1, False: [[#min(C,2)]]]
411c25a3bfSNAKAMURA Takumi             b0);           // BRCOV: Branch ([[@LINE]]:13): [True: 0, False: 1]
421c25a3bfSNAKAMURA Takumi 
431c25a3bfSNAKAMURA Takumi   bool f = (b0  ||         // BRCOV: Branch ([[@LINE]]:13): [True: [[#min(C,3)]], False: 1]
441c25a3bfSNAKAMURA Takumi             b5) &&         // BRCOV: Branch ([[@LINE]]:13): [True: 1, False: 0]
451c25a3bfSNAKAMURA Takumi            (b1  ||         // BRCOV: Branch ([[@LINE]]:13): [True: [[#min(C,2)]], False: [[#min(C,2)]]]
461c25a3bfSNAKAMURA Takumi             b4) &&         // BRCOV: Branch ([[@LINE]]:13): [True: 1, False: 1]
471c25a3bfSNAKAMURA Takumi            (b2  ||         // BRCOV: Branch ([[@LINE]]:13): [True: [[#min(C,3)]], False: 0]
481c25a3bfSNAKAMURA Takumi             b3) &&         // BRCOV: Branch ([[@LINE]]:13): [True: 0, False: 0]
491c25a3bfSNAKAMURA Takumi            (b3  ||         // BRCOV: Branch ([[@LINE]]:13): [True: 0, False: [[#min(C,3)]]]
501c25a3bfSNAKAMURA Takumi             b2) &&         // BRCOV: Branch ([[@LINE]]:13): [True: [[#min(C,3)]], False: 0]
511c25a3bfSNAKAMURA Takumi            (b4  ||         // BRCOV: Branch ([[@LINE]]:13): [True: 1, False: [[#min(C,2)]]]
521c25a3bfSNAKAMURA Takumi             b1) &&         // BRCOV: Branch ([[@LINE]]:13): [True: [[#min(C,2)]], False: 0]
531c25a3bfSNAKAMURA Takumi            (b5  ||         // BRCOV: Branch ([[@LINE]]:13): [True: 1, False: [[#min(C,2)]]]
541c25a3bfSNAKAMURA Takumi             b0);           // BRCOV: Branch ([[@LINE]]:13): [True: [[#min(C,2)]], False: 0]
551c25a3bfSNAKAMURA Takumi 
561c25a3bfSNAKAMURA Takumi   if (c)                   // BRCOV: Branch ([[@LINE]]:7): [True: 0, False: [[#min(C,4)]]]
571c25a3bfSNAKAMURA Takumi     printf("case0\n");
581c25a3bfSNAKAMURA Takumi   else
591c25a3bfSNAKAMURA Takumi     printf("case1\n");
601c25a3bfSNAKAMURA Takumi 
611c25a3bfSNAKAMURA Takumi   if (d)                   // BRCOV: Branch ([[@LINE]]:7): [True: [[#min(C,4)]], False: 0]
621c25a3bfSNAKAMURA Takumi     printf("case2\n");
631c25a3bfSNAKAMURA Takumi   else
641c25a3bfSNAKAMURA Takumi     printf("case3\n");
651c25a3bfSNAKAMURA Takumi 
661c25a3bfSNAKAMURA Takumi   if (e)                   // BRCOV: Branch ([[@LINE]]:7): [True: 1, False: [[#min(C,3)]]]
671c25a3bfSNAKAMURA Takumi     printf("case4\n");
681c25a3bfSNAKAMURA Takumi   else
691c25a3bfSNAKAMURA Takumi     printf("case5\n");
701c25a3bfSNAKAMURA Takumi 
711c25a3bfSNAKAMURA Takumi   if (f)                   // BRCOV: Branch ([[@LINE]]:7): [True: [[#min(C,3)]], False: 1]
721c25a3bfSNAKAMURA Takumi     printf("case6\n");
731c25a3bfSNAKAMURA Takumi   else
741c25a3bfSNAKAMURA Takumi     printf("case7\n");
751c25a3bfSNAKAMURA Takumi }
761c25a3bfSNAKAMURA Takumi 
771c25a3bfSNAKAMURA Takumi 
781c25a3bfSNAKAMURA Takumi int main(int argc, char *argv[])
791c25a3bfSNAKAMURA Takumi {
801c25a3bfSNAKAMURA Takumi   func(atoi(argv[1]), atoi(argv[2]));
811c25a3bfSNAKAMURA Takumi   (void)0;
821c25a3bfSNAKAMURA Takumi   return 0;
831c25a3bfSNAKAMURA Takumi }
84