CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
231 lines
8.9 KiB
Plaintext
231 lines
8.9 KiB
Plaintext
// Test visualization of MC/DC constructs for branches in macro expansions.
|
|
|
|
// RUN: llvm-profdata merge %S/Inputs/mcdc-macro.proftext -o %t.profdata
|
|
// RUN: llvm-cov show --show-expansions --show-branches=count --show-mcdc %S/Inputs/mcdc-macro.o -instr-profile %t.profdata --compilation-dir=%S/Inputs | FileCheck %s
|
|
// RUN: llvm-cov show --show-expansions --show-branches=count --show-mcdc --show-mcdc-non-executed-vectors %S/Inputs/mcdc-macro.o -instr-profile %t.profdata --compilation-dir=%S/Inputs | FileCheck %s -check-prefix=ALL
|
|
|
|
// CHECK: | | | Branch (2:11): [Folded - Ignored]
|
|
// CHECK: | | | Branch (3:11): [True: 1, False: 0]
|
|
// CHECK: | | | Branch (3:23): [True: 1, False: 0]
|
|
// CHECK: | Branch (9:7): [True: 1, False: 0]
|
|
// CHECK-NEXT: | Branch (9:22): [True: 0, False: 0]
|
|
// CHECK-NEXT: ------------------
|
|
// CHECK-NEXT: |---> MC/DC Decision Region (9:7) to (9:23)
|
|
// CHECK-NEXT: |
|
|
// CHECK-NEXT: | Number of Conditions: 5
|
|
// CHECK-NEXT: | Condition C1 --> (9:7)
|
|
// CHECK-NEXT: | Condition C2 --> (2:11)
|
|
// CHECK-NEXT: | Condition C3 --> (3:11)
|
|
// CHECK-NEXT: | Condition C4 --> (3:23)
|
|
// CHECK-NEXT: | Condition C5 --> (9:22)
|
|
// CHECK-NEXT: |
|
|
// CHECK-NEXT: | MC/DC Test Vectors:
|
|
// CHECK-NEXT: |
|
|
// CHECK-NEXT: | Executed:
|
|
// CHECK-NEXT: |
|
|
// CHECK-NEXT: | C1, C2, C3, C4, C5 Result
|
|
// CHECK-NEXT: | 1 { T, C, T, T, - = T }
|
|
// CHECK-NEXT: |
|
|
// CHECK-NEXT: | C1-Pair: not covered
|
|
// CHECK-NEXT: | C2-Pair: constant folded
|
|
// CHECK-NEXT: | C3-Pair: not covered
|
|
// CHECK-NEXT: | C4-Pair: not covered
|
|
// CHECK-NEXT: | C5-Pair: not covered
|
|
// CHECK-NEXT: | MC/DC Coverage for Decision: 0.00%
|
|
// CHECK-NEXT: |
|
|
// CHECK-NEXT: ------------------
|
|
|
|
// CHECK: | | | Branch (2:11): [Folded - Ignored]
|
|
// CHECK: | Branch (11:7): [True: 1, False: 0]
|
|
// CHECK-NEXT: ------------------
|
|
// CHECK-NEXT: |---> MC/DC Decision Region (11:7) to (11:13)
|
|
// CHECK-NEXT: |
|
|
// CHECK-NEXT: | Number of Conditions: 2
|
|
// CHECK-NEXT: | Condition C1 --> (11:7)
|
|
// CHECK-NEXT: | Condition C2 --> (2:11)
|
|
// CHECK-NEXT: |
|
|
// CHECK-NEXT: | MC/DC Test Vectors:
|
|
// CHECK-NEXT: |
|
|
// CHECK-NEXT: | Executed:
|
|
// CHECK-NEXT: |
|
|
// CHECK-NEXT: | C1, C2 Result
|
|
// CHECK-NEXT: | 1 { T, C = T }
|
|
// CHECK-NEXT: |
|
|
// CHECK-NEXT: | C1-Pair: not covered
|
|
// CHECK-NEXT: | C2-Pair: constant folded
|
|
// CHECK-NEXT: | MC/DC Coverage for Decision: 0.00%
|
|
// CHECK-NEXT: |
|
|
// CHECK-NEXT: ------------------
|
|
|
|
// CHECK: | | | Branch (1:11): [True: 1, False: 0]
|
|
// CHECK: | | | Branch (2:11): [Folded - Ignored]
|
|
// CHECK: | | | | | Branch (3:11): [True: 0, False: 0]
|
|
// CHECK: | | | | | Branch (3:23): [True: 0, False: 0]
|
|
// CHECK: | Branch (13:7): [True: 1, False: 0]
|
|
// CHECK-NEXT: | Branch (13:13): [True: 1, False: 0]
|
|
// CHECK-NEXT: ------------------
|
|
// CHECK-NEXT: |---> MC/DC Decision Region (13:7) to (13:32)
|
|
// CHECK-NEXT: |
|
|
// CHECK-NEXT: | Number of Conditions: 6
|
|
// CHECK-NEXT: | Condition C1 --> (13:7)
|
|
// CHECK-NEXT: | Condition C2 --> (13:13)
|
|
// CHECK-NEXT: | Condition C3 --> (1:11)
|
|
// CHECK-NEXT: | Condition C4 --> (2:11)
|
|
// CHECK-NEXT: | Condition C5 --> (3:11)
|
|
// CHECK-NEXT: | Condition C6 --> (3:23)
|
|
// CHECK-NEXT: |
|
|
// CHECK-NEXT: | MC/DC Test Vectors:
|
|
// CHECK-NEXT: |
|
|
// CHECK-NEXT: | Executed:
|
|
// CHECK-NEXT: |
|
|
// CHECK-NEXT: | C1, C2, C3, C4, C5, C6 Result
|
|
// CHECK-NEXT: | 1 { T, T, T, C, -, - = T }
|
|
// CHECK-NEXT: |
|
|
// CHECK-NEXT: | C1-Pair: not covered
|
|
// CHECK-NEXT: | C2-Pair: not covered
|
|
// CHECK-NEXT: | C3-Pair: not covered
|
|
// CHECK-NEXT: | C4-Pair: constant folded
|
|
// CHECK-NEXT: | C5-Pair: not covered
|
|
// CHECK-NEXT: | C6-Pair: not covered
|
|
// CHECK-NEXT: | MC/DC Coverage for Decision: 0.00%
|
|
// CHECK-NEXT: |
|
|
// CHECK-NEXT: ------------------
|
|
|
|
// Same as CHECK above, but with --show-mcdc-non-executed-vectors (Not executed section after each decision).
|
|
|
|
// ALL: | | | Branch (2:11): [Folded - Ignored]
|
|
// ALL: | | | Branch (3:11): [True: 1, False: 0]
|
|
// ALL: | | | Branch (3:23): [True: 1, False: 0]
|
|
// ALL: | Branch (9:7): [True: 1, False: 0]
|
|
// ALL-NEXT: | Branch (9:22): [True: 0, False: 0]
|
|
// ALL-NEXT: ------------------
|
|
// ALL-NEXT: |---> MC/DC Decision Region (9:7) to (9:23)
|
|
// ALL-NEXT: |
|
|
// ALL-NEXT: | Number of Conditions: 5
|
|
// ALL-NEXT: | Condition C1 --> (9:7)
|
|
// ALL-NEXT: | Condition C2 --> (2:11)
|
|
// ALL-NEXT: | Condition C3 --> (3:11)
|
|
// ALL-NEXT: | Condition C4 --> (3:23)
|
|
// ALL-NEXT: | Condition C5 --> (9:22)
|
|
// ALL-NEXT: |
|
|
// ALL-NEXT: | MC/DC Test Vectors:
|
|
// ALL-NEXT: |
|
|
// ALL-NEXT: | Executed:
|
|
// ALL-NEXT: |
|
|
// ALL-NEXT: | C1, C2, C3, C4, C5 Result
|
|
// ALL-NEXT: | 1 { T, C, T, T, - = T }
|
|
// ALL-NEXT: |
|
|
// ALL-NEXT: | Not executed:
|
|
// ALL-NEXT: |
|
|
// ALL-NEXT: | C1, C2, C3, C4, C5 Result
|
|
// ALL-NEXT: | 2 { F, C, -, -, F = F }
|
|
// ALL-NEXT: | 3 { T, C, -, -, F = F }
|
|
// ALL-NEXT: | 4 { T, C, F, -, F = F }
|
|
// ALL-NEXT: | 5 { T, C, T, F, F = F }
|
|
// ALL-NEXT: | 6 { F, C, -, -, T = T }
|
|
// ALL-NEXT: | 7 { T, C, -, -, T = T }
|
|
// ALL-NEXT: | 8 { T, C, F, -, T = T }
|
|
// ALL-NEXT: | 9 { T, C, T, F, T = T }
|
|
// ALL-NEXT: |
|
|
// ALL-NEXT: | C1-Pair: not covered
|
|
// ALL-NEXT: | C2-Pair: constant folded
|
|
// ALL-NEXT: | C3-Pair: not covered
|
|
// ALL-NEXT: | C4-Pair: not covered
|
|
// ALL-NEXT: | C5-Pair: not covered
|
|
// ALL-NEXT: | MC/DC Coverage for Decision: 0.00%
|
|
// ALL-NEXT: |
|
|
// ALL-NEXT: ------------------
|
|
|
|
// ALL: | | | Branch (2:11): [Folded - Ignored]
|
|
// ALL: | Branch (11:7): [True: 1, False: 0]
|
|
// ALL-NEXT: ------------------
|
|
// ALL-NEXT: |---> MC/DC Decision Region (11:7) to (11:13)
|
|
// ALL-NEXT: |
|
|
// ALL-NEXT: | Number of Conditions: 2
|
|
// ALL-NEXT: | Condition C1 --> (11:7)
|
|
// ALL-NEXT: | Condition C2 --> (2:11)
|
|
// ALL-NEXT: |
|
|
// ALL-NEXT: | MC/DC Test Vectors:
|
|
// ALL-NEXT: |
|
|
// ALL-NEXT: | Executed:
|
|
// ALL-NEXT: |
|
|
// ALL-NEXT: | C1, C2 Result
|
|
// ALL-NEXT: | 1 { T, C = T }
|
|
// ALL-NEXT: |
|
|
// ALL-NEXT: | Not executed:
|
|
// ALL-NEXT: |
|
|
// ALL-NEXT: | C1, C2 Result
|
|
// ALL-NEXT: | 2 { F, C = F }
|
|
// ALL-NEXT: | 3 { T, C = F }
|
|
// ALL-NEXT: |
|
|
// ALL-NEXT: | C1-Pair: not covered
|
|
// ALL-NEXT: | C2-Pair: constant folded
|
|
// ALL-NEXT: | MC/DC Coverage for Decision: 0.00%
|
|
// ALL-NEXT: |
|
|
// ALL-NEXT: ------------------
|
|
|
|
// ALL: | | | Branch (1:11): [True: 1, False: 0]
|
|
// ALL: | | | Branch (2:11): [Folded - Ignored]
|
|
// ALL: | | | | | Branch (3:11): [True: 0, False: 0]
|
|
// ALL: | | | | | Branch (3:23): [True: 0, False: 0]
|
|
// ALL: | Branch (13:7): [True: 1, False: 0]
|
|
// ALL-NEXT: | Branch (13:13): [True: 1, False: 0]
|
|
// ALL-NEXT: ------------------
|
|
// ALL-NEXT: |---> MC/DC Decision Region (13:7) to (13:32)
|
|
// ALL-NEXT: |
|
|
// ALL-NEXT: | Number of Conditions: 6
|
|
// ALL-NEXT: | Condition C1 --> (13:7)
|
|
// ALL-NEXT: | Condition C2 --> (13:13)
|
|
// ALL-NEXT: | Condition C3 --> (1:11)
|
|
// ALL-NEXT: | Condition C4 --> (2:11)
|
|
// ALL-NEXT: | Condition C5 --> (3:11)
|
|
// ALL-NEXT: | Condition C6 --> (3:23)
|
|
// ALL-NEXT: |
|
|
// ALL-NEXT: | MC/DC Test Vectors:
|
|
// ALL-NEXT: |
|
|
// ALL-NEXT: | Executed:
|
|
// ALL-NEXT: |
|
|
// ALL-NEXT: | C1, C2, C3, C4, C5, C6 Result
|
|
// ALL-NEXT: | 1 { T, T, T, C, -, - = T }
|
|
// ALL-NEXT: |
|
|
// ALL-NEXT: | Not executed:
|
|
// ALL-NEXT: |
|
|
// ALL-NEXT: | C1, C2, C3, C4, C5, C6 Result
|
|
// ALL-NEXT: | 2 { F, -, -, C, -, - = F }
|
|
// ALL-NEXT: | 3 { T, F, -, C, -, - = F }
|
|
// ALL-NEXT: | 4 { T, T, F, C, -, - = F }
|
|
// ALL-NEXT: | 5 { F, -, -, C, F, - = F }
|
|
// ALL-NEXT: | 6 { T, F, -, C, F, - = F }
|
|
// ALL-NEXT: | 7 { T, T, F, C, F, - = F }
|
|
// ALL-NEXT: | 8 { F, -, -, C, T, F = F }
|
|
// ALL-NEXT: | 9 { T, F, -, C, T, F = F }
|
|
// ALL-NEXT: | 10 { T, T, F, C, T, F = F }
|
|
// ALL-NEXT: | 11 { F, -, -, C, T, T = T }
|
|
// ALL-NEXT: | 12 { T, F, -, C, T, T = T }
|
|
// ALL-NEXT: | 13 { T, T, F, C, T, T = T }
|
|
// ALL-NEXT: |
|
|
// ALL-NEXT: | C1-Pair: not covered
|
|
// ALL-NEXT: | C2-Pair: not covered
|
|
// ALL-NEXT: | C3-Pair: not covered
|
|
// ALL-NEXT: | C4-Pair: constant folded
|
|
// ALL-NEXT: | C5-Pair: not covered
|
|
// ALL-NEXT: | C6-Pair: not covered
|
|
// ALL-NEXT: | MC/DC Coverage for Decision: 0.00%
|
|
// ALL-NEXT: |
|
|
// ALL-NEXT: ------------------
|
|
|
|
Instructions for regenerating the test:
|
|
|
|
cd %S/Inputs # Or copy mcdc-macro.c into the working directory
|
|
|
|
clang -fcoverage-mcdc -fprofile-instr-generate -fcoverage-compilation-dir=. \
|
|
-Os -mllvm -enable-name-compression=false \
|
|
-fcoverage-mapping mcdc-macro.c -c
|
|
|
|
# Instructions for generating proftext
|
|
clang -fprofile-instr-generate mcdc-macro.o
|
|
rm -f default.prof*
|
|
./a.out
|
|
llvm-profdata merge --sparse -o default.profdata default.profraw
|
|
llvm-profdata merge --text -o mcdc-macro.proftext default.profdata
|