53 lines · cpp
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 COND310#define MACRO2 MACRO111#define MACRO3 MACRO212 13#include <stdlib.h>14 15// CHECK: |{{ +}}[[#min(C,3)]]|bool func(16bool 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 36bool 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 46int 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