   LL|       |#![feature(core_intrinsics, coverage_attribute)]
   LL|       |//@ edition: 2021
   LL|       |
   LL|       |// <https://github.com/rust-lang/rust/issues/116171>
   LL|       |// If we instrument a function for coverage, but all of its counter-increment
   LL|       |// statements are removed by MIR optimizations, LLVM will think it isn't
   LL|       |// instrumented and it will disappear from coverage maps and coverage reports.
   LL|       |// Most MIR opts won't cause this because they tend not to remove statements
   LL|       |// from bb0, but `UnreachablePropagation` can do so if it sees that bb0 ends
   LL|       |// with `TerminatorKind::Unreachable`.
   LL|       |
   LL|       |use std::hint::{black_box, unreachable_unchecked};
   LL|       |
   LL|      0|static UNREACHABLE_CLOSURE: fn() = || unsafe { unreachable_unchecked() };
   LL|       |
   LL|      0|fn unreachable_function() {
   LL|      0|    unsafe { unreachable_unchecked() }
   LL|       |}
   LL|       |
   LL|       |// Use an intrinsic to more reliably trigger unreachable-propagation.
   LL|      0|fn unreachable_intrinsic() {
   LL|      0|    unsafe { std::intrinsics::unreachable() }
   LL|       |}
   LL|       |
   LL|       |#[coverage(off)]
   LL|       |fn main() {
   LL|       |    if black_box(false) {
   LL|       |        UNREACHABLE_CLOSURE();
   LL|       |    }
   LL|       |    if black_box(false) {
   LL|       |        unreachable_function();
   LL|       |    }
   LL|       |    if black_box(false) {
   LL|       |        unreachable_intrinsic();
   LL|       |    }
   LL|       |}

