$DIR/auxiliary/used_crate.rs:
   LL|       |#![allow(unused_assignments, unused_variables)]
   LL|       |// Verify that coverage works with optimizations:
   LL|       |//@ compile-flags: -C opt-level=3
   LL|       |
   LL|       |use std::fmt::Debug;
   LL|       |
   LL|      1|pub fn used_function() {
   LL|       |    // Initialize test constants in a way that cannot be determined at compile time, to ensure
   LL|       |    // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from
   LL|       |    // dependent conditions.
   LL|      1|    let is_true = std::env::args().len() == 1;
   LL|      1|    let mut countdown = 0;
   LL|      1|    if is_true {
   LL|      1|        countdown = 10;
   LL|      1|    }
                  ^0
   LL|      1|    use_this_lib_crate();
   LL|      1|}
   LL|       |
   LL|      2|pub fn used_only_from_bin_crate_generic_function<T: Debug>(arg: T) {
   LL|      2|    println!("used_only_from_bin_crate_generic_function with {arg:?}");
   LL|      2|}
  ------------------
  | Unexecuted instantiation: used_crate::used_only_from_bin_crate_generic_function::<_>
  ------------------
  | used_crate::used_only_from_bin_crate_generic_function::<&alloc::vec::Vec<i32>>:
  |   LL|      1|pub fn used_only_from_bin_crate_generic_function<T: Debug>(arg: T) {
  |   LL|      1|    println!("used_only_from_bin_crate_generic_function with {arg:?}");
  |   LL|      1|}
  ------------------
  | used_crate::used_only_from_bin_crate_generic_function::<&str>:
  |   LL|      1|pub fn used_only_from_bin_crate_generic_function<T: Debug>(arg: T) {
  |   LL|      1|    println!("used_only_from_bin_crate_generic_function with {arg:?}");
  |   LL|      1|}
  ------------------
   LL|       |// Expect for above function: `Unexecuted instantiation` (see below)
   LL|      2|pub fn used_only_from_this_lib_crate_generic_function<T: Debug>(arg: T) {
   LL|      2|    println!("used_only_from_this_lib_crate_generic_function with {arg:?}");
   LL|      2|}
  ------------------
  | used_crate::used_only_from_this_lib_crate_generic_function::<&str>:
  |   LL|      1|pub fn used_only_from_this_lib_crate_generic_function<T: Debug>(arg: T) {
  |   LL|      1|    println!("used_only_from_this_lib_crate_generic_function with {arg:?}");
  |   LL|      1|}
  ------------------
  | used_crate::used_only_from_this_lib_crate_generic_function::<alloc::vec::Vec<i32>>:
  |   LL|      1|pub fn used_only_from_this_lib_crate_generic_function<T: Debug>(arg: T) {
  |   LL|      1|    println!("used_only_from_this_lib_crate_generic_function with {arg:?}");
  |   LL|      1|}
  ------------------
   LL|       |
   LL|      2|pub fn used_from_bin_crate_and_lib_crate_generic_function<T: Debug>(arg: T) {
   LL|      2|    println!("used_from_bin_crate_and_lib_crate_generic_function with {arg:?}");
   LL|      2|}
  ------------------
  | used_crate::used_from_bin_crate_and_lib_crate_generic_function::<&str>:
  |   LL|      1|pub fn used_from_bin_crate_and_lib_crate_generic_function<T: Debug>(arg: T) {
  |   LL|      1|    println!("used_from_bin_crate_and_lib_crate_generic_function with {arg:?}");
  |   LL|      1|}
  ------------------
  | used_crate::used_from_bin_crate_and_lib_crate_generic_function::<alloc::vec::Vec<i32>>:
  |   LL|      1|pub fn used_from_bin_crate_and_lib_crate_generic_function<T: Debug>(arg: T) {
  |   LL|      1|    println!("used_from_bin_crate_and_lib_crate_generic_function with {arg:?}");
  |   LL|      1|}
  ------------------
   LL|       |
   LL|      2|pub fn used_with_same_type_from_bin_crate_and_lib_crate_generic_function<T: Debug>(arg: T) {
   LL|      2|    println!("used_with_same_type_from_bin_crate_and_lib_crate_generic_function with {arg:?}");
   LL|      2|}
  ------------------
  | used_crate::used_with_same_type_from_bin_crate_and_lib_crate_generic_function::<&str>:
  |   LL|      1|pub fn used_with_same_type_from_bin_crate_and_lib_crate_generic_function<T: Debug>(arg: T) {
  |   LL|      1|    println!("used_with_same_type_from_bin_crate_and_lib_crate_generic_function with {arg:?}");
  |   LL|      1|}
  ------------------
  | used_crate::used_with_same_type_from_bin_crate_and_lib_crate_generic_function::<&str>:
  |   LL|      1|pub fn used_with_same_type_from_bin_crate_and_lib_crate_generic_function<T: Debug>(arg: T) {
  |   LL|      1|    println!("used_with_same_type_from_bin_crate_and_lib_crate_generic_function with {arg:?}");
  |   LL|      1|}
  ------------------
   LL|       |
   LL|      0|pub fn unused_generic_function<T: Debug>(arg: T) {
   LL|      0|    println!("unused_generic_function with {arg:?}");
   LL|      0|}
   LL|       |
   LL|      0|pub fn unused_function() {
   LL|      0|    let is_true = std::env::args().len() == 1;
   LL|      0|    let mut countdown = 2;
   LL|      0|    if !is_true {
   LL|      0|        countdown = 20;
   LL|      0|    }
   LL|      0|}
   LL|       |
   LL|       |#[allow(dead_code)]
   LL|      0|fn unused_private_function() {
   LL|      0|    let is_true = std::env::args().len() == 1;
   LL|      0|    let mut countdown = 2;
   LL|      0|    if !is_true {
   LL|      0|        countdown = 20;
   LL|      0|    }
   LL|      0|}
   LL|       |
   LL|      1|fn use_this_lib_crate() {
   LL|      1|    used_from_bin_crate_and_lib_crate_generic_function("used from library used_crate.rs");
   LL|      1|    used_with_same_type_from_bin_crate_and_lib_crate_generic_function(
   LL|       |        "used from library used_crate.rs",
   LL|       |    );
   LL|      1|    let some_vec = vec![5, 6, 7, 8];
   LL|      1|    used_only_from_this_lib_crate_generic_function(some_vec);
   LL|      1|    used_only_from_this_lib_crate_generic_function("used ONLY from library used_crate.rs");
   LL|      1|}
   LL|       |
   LL|       |// FIXME(#79651): "Unexecuted instantiation" errors appear in coverage results,
   LL|       |// for example:
   LL|       |//
   LL|       |// | Unexecuted instantiation: used_crate::used_only_from_bin_crate_generic_function::<_>
   LL|       |//
   LL|       |// These notices appear when `llvm-cov` shows instantiations. This may be a
   LL|       |// default option, but it can be suppressed with:
   LL|       |//
   LL|       |// ```shell
   LL|       |// $ `llvm-cov show --show-instantiations=0 ...`
   LL|       |// ```
   LL|       |//
   LL|       |// The notice is triggered because the function is unused by the library itself,
   LL|       |// so when the library is compiled, an "unused" set of mappings for that function
   LL|       |// is included in the library's coverage metadata.
   LL|       |//
   LL|       |// Even though this function is used by `uses_crate.rs` (and
   LL|       |// counted), with substitutions for `T`, those instantiations are only generated
   LL|       |// when the generic function is actually used (from the binary, not from this
   LL|       |// library crate). So the test result shows coverage for all instantiated
   LL|       |// versions and their generic type substitutions, plus the `Unexecuted
   LL|       |// instantiation` message for the non-substituted version. This is valid, but
   LL|       |// unfortunately a little confusing.
   LL|       |//
   LL|       |// The library crate has its own coverage map, and the only way to show unused
   LL|       |// coverage of a generic function is to include the generic function in the
   LL|       |// coverage map, marked as an "unused function". If the library were used by
   LL|       |// another binary that never used this generic function, then it would be valid
   LL|       |// to show the unused generic, with unknown substitution (`_`).
   LL|       |//
   LL|       |// The alternative would be to exclude all generics from being included in the
   LL|       |// "unused functions" list, which would then omit coverage results for
   LL|       |// `unused_generic_function<T>()`.

$DIR/uses_crate.rs:
   LL|       |// This test was failing on Linux for a while due to #110393 somehow making
   LL|       |// the unused functions not instrumented, but it seems to be fine now.
   LL|       |
   LL|       |// Validates coverage now works with optimizations
   LL|       |//@ compile-flags: -C opt-level=3
   LL|       |
   LL|       |#![allow(unused_assignments, unused_variables)]
   LL|       |
   LL|       |//@ aux-build:used_crate.rs
   LL|       |extern crate used_crate;
   LL|       |
   LL|      1|fn main() {
   LL|      1|    used_crate::used_function();
   LL|      1|    let some_vec = vec![1, 2, 3, 4];
   LL|      1|    used_crate::used_only_from_bin_crate_generic_function(&some_vec);
   LL|      1|    used_crate::used_only_from_bin_crate_generic_function("used from bin uses_crate.rs");
   LL|      1|    used_crate::used_from_bin_crate_and_lib_crate_generic_function(some_vec);
   LL|      1|    used_crate::used_with_same_type_from_bin_crate_and_lib_crate_generic_function("interesting?");
   LL|      1|}

