LL|       |#![feature(coverage_attribute)]
   LL|       |//@ edition: 2021
   LL|       |//@ ignore-llvm-version: 19 - 99
   LL|       |//@ compile-flags: -Zcoverage-options=mcdc
   LL|       |//@ llvm-cov-flags: --show-branches=count --show-mcdc
   LL|       |
   LL|       |// Check that MC/DC instrumentation can gracefully handle conditions that
   LL|       |// exceed LLVM's limit of 6 conditions per decision.
   LL|       |//
   LL|       |// (The limit is enforced in `compiler/rustc_mir_build/src/build/coverageinfo/mcdc.rs`.)
   LL|       |
   LL|      1|fn good() {
   LL|      1|    // With only 6 conditions, perform full MC/DC instrumentation.
   LL|      1|    let [a, b, c, d, e, f] = <[bool; 6]>::default();
   LL|      1|    if a && b && c && d && e && f {
                          ^0   ^0   ^0   ^0   ^0
  ------------------
  |  Branch (LL:8): [True: 0, False: 1]
  |  Branch (LL:13): [True: 0, False: 0]
  |  Branch (LL:18): [True: 0, False: 0]
  |  Branch (LL:23): [True: 0, False: 0]
  |  Branch (LL:28): [True: 0, False: 0]
  |  Branch (LL:33): [True: 0, False: 0]
  ------------------
  |---> MC/DC Decision Region (LL:8) to (LL:34)
  |
  |  Number of Conditions: 6
  |     Condition C1 --> (LL:8)
  |     Condition C2 --> (LL:13)
  |     Condition C3 --> (LL:18)
  |     Condition C4 --> (LL:23)
  |     Condition C5 --> (LL:28)
  |     Condition C6 --> (LL:33)
  |
  |  Executed MC/DC Test Vectors:
  |
  |     C1, C2, C3, C4, C5, C6    Result
  |  1 { F,  -,  -,  -,  -,  -  = F      }
  |
  |  C1-Pair: not covered
  |  C2-Pair: not covered
  |  C3-Pair: not covered
  |  C4-Pair: not covered
  |  C5-Pair: not covered
  |  C6-Pair: not covered
  |  MC/DC Coverage for Decision: 0.00%
  |
  ------------------
   LL|      0|        core::hint::black_box("hello");
   LL|      1|    }
   LL|      1|}
   LL|       |
   LL|      1|fn bad() {
   LL|      1|    // With 7 conditions, fall back to branch instrumentation only.
   LL|      1|    let [a, b, c, d, e, f, g] = <[bool; 7]>::default();
   LL|      1|    if a && b && c && d && e && f && g {
                          ^0   ^0   ^0   ^0   ^0   ^0
  ------------------
  |  Branch (LL:8): [True: 0, False: 1]
  |  Branch (LL:13): [True: 0, False: 0]
  |  Branch (LL:18): [True: 0, False: 0]
  |  Branch (LL:23): [True: 0, False: 0]
  |  Branch (LL:28): [True: 0, False: 0]
  |  Branch (LL:33): [True: 0, False: 0]
  |  Branch (LL:38): [True: 0, False: 0]
  ------------------
   LL|      0|        core::hint::black_box("hello");
   LL|      1|    }
   LL|      1|}
   LL|       |
   LL|       |#[coverage(off)]
   LL|       |fn main() {
   LL|       |    good();
   LL|       |    bad();
   LL|       |}