1 2 3 4 5 #define COND1 (a == b) 6 #define COND2 (a != b) 7 #define COND3 (COND1 && COND2) 8 #define COND4 (COND3 ? COND2 : COND1) // BRCOV: | Branch ([[@LINE]]:15): [True: 1, False: [[#min(C,2)]]] 9 #define MACRO1 COND3 10 #define MACRO2 MACRO1 11 #define MACRO3 MACRO2 12 13 #include <stdlib.h> 14 15 // CHECK: |{{ +}}[[#min(C,3)]]|bool func( 16 bool func(int a, int b) { 17 bool c = COND1 && COND2; // BRCOV: | | | Branch ([[@LINE-12]]:15): [True: 1, False: [[#min(C,2)]]] 18 // BRCOV: | | | Branch ([[@LINE-12]]:15): [True: 0, False: 1] 19 bool d = COND3; // BRCOV: | | | | | Branch ([[@LINE-14]]:15): [True: 1, False: [[#min(C,2)]]] 20 // BRCOV: | | | | | Branch ([[@LINE-14]]:15): [True: 0, False: 1] 21 bool e = MACRO1; // BRCOV: | | | | | | | Branch ([[@LINE-16]]:15): [True: 1, False: [[#min(C,2)]]] 22 // BRCOV: | | | | | | | Branch ([[@LINE-16]]:15): [True: 0, False: 1] 23 bool f = MACRO2; // BRCOV: | | | | | | | | | Branch ([[@LINE-18]]:15): [True: 1, False: [[#min(C,2)]]] 24 // BRCOV: | | | | | | | | | Branch ([[@LINE-18]]:15): [True: 0, False: 1] 25 bool g = MACRO3; // BRCOV: | | | | | | | | | | | Branch ([[@LINE-20]]:15): [True: 1, False: [[#min(C,2)]]] 26 // BRCOV: | | | | | | | | | | | Branch ([[@LINE-20]]:15): [True: 0, False: 1] 27 return c && d && e && f && g; 28 // BRCOV: | Branch ([[@LINE-1]]:10): [True: 0, False: [[#min(C,3)]]] 29 // BRCOV: | Branch ([[@LINE-2]]:15): [True: 0, False: 0] 30 // BRCOV: | Branch ([[@LINE-3]]:20): [True: 0, False: 0] 31 // BRCOV: | Branch ([[@LINE-4]]:25): [True: 0, False: 0] 32 // BRCOV: | Branch ([[@LINE-5]]:30): [True: 0, False: 0] 33 } 34 35 36 bool func2(int a, int b) { 37 bool h = MACRO3 || COND4; // BRCOV: | | | | | | | | | | | Branch ([[@LINE-32]]:15): [True: 1, False: [[#min(C,2)]]] 38 // BRCOV: | | | | | | | | | | | Branch ([[@LINE-32]]:15): [True: 0, False: 1] 39 // BRCOV: | | | | | | | Branch ([[@LINE-34]]:15): [True: 1, False: [[#min(C,2)]]] 40 // BRCOV: | | | | | | | Branch ([[@LINE-34]]:15): [True: 0, False: 1] 41 // BRCOV: | | | Branch ([[@LINE-33]]:15): [True: 1, False: [[#min(C,2)]]] 42 return h; 43 } 44 45 46 int main(int argc, char *argv[]) 47 { 48 func(atoi(argv[1]), atoi(argv[2])); 49 func2(atoi(argv[1]), atoi(argv[2])); 50 (void)0; 51 return 0; 52 } 53