1 // Test to ensure instrumentation of logical operator RHS True/False counters
2 // are being instrumented for branch coverage
4 // RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++11 -main-file-name branch-logical-mixed.cpp %s -o - -emit-llvm -fprofile-instrument=clang | FileCheck -allow-deprecated-dag-overlap %s
7 // CHECK: @[[FUNC:__profc__Z4funcv]] = {{.*}} global [61 x i64] zeroinitializer
10 // CHECK-LABEL: @_Z4funcv()
26 bf0
&& // CHECK: store {{.*}} @[[FUNC]], i32 0, i32 10
27 bt1
&& // CHECK: store {{.*}} @[[FUNC]], i32 0, i32 8
28 bf1
&& // CHECK: store {{.*}} @[[FUNC]], i32 0, i32 6
29 bt2
&& // CHECK: store {{.*}} @[[FUNC]], i32 0, i32 4
30 bf2
; // CHECK: store {{.*}} @[[FUNC]], i32 0, i32 2
33 bf0
|| // CHECK: store {{.*}} @[[FUNC]], i32 0, i32 20
34 bt1
|| // CHECK: store {{.*}} @[[FUNC]], i32 0, i32 18
35 bf1
|| // CHECK: store {{.*}} @[[FUNC]], i32 0, i32 16
36 bt2
|| // CHECK: store {{.*}} @[[FUNC]], i32 0, i32 14
37 bf2
; // CHECK: store {{.*}} @[[FUNC]], i32 0, i32 12
40 bf0
) || // CHECK: store {{.*}} @[[FUNC]], i32 0, i32 27
42 bf1
) || // CHECK: store {{.*}} @[[FUNC]], i32 0, i32 29
44 bf2
) || // CHECK: store {{.*}} @[[FUNC]], i32 0, i32 31
46 bf3
) || // CHECK: store {{.*}} @[[FUNC]], i32 0, i32 33
48 bf4
) || // CHECK: store {{.*}} @[[FUNC]], i32 0, i32 35
50 bf5
); // CHECK: store {{.*}} @[[FUNC]], i32 0, i32 37
53 bf0
) && // CHECK: store {{.*}} @[[FUNC]], i32 0, i32 44
55 bf1
) && // CHECK: store {{.*}} @[[FUNC]], i32 0, i32 46
57 bf2
) && // CHECK: store {{.*}} @[[FUNC]], i32 0, i32 48
59 bf3
) && // CHECK: store {{.*}} @[[FUNC]], i32 0, i32 50
61 bf4
) && // CHECK: store {{.*}} @[[FUNC]], i32 0, i32 52
63 bf5
); // CHECK: store {{.*}} @[[FUNC]], i32 0, i32 54
65 return a
&& b
&& c
&& d
;