From def932ca865b86a5057517d8a0e27c0ca72a0815 Mon Sep 17 00:00:00 2001 From: Rich Kadel Date: Mon, 30 Nov 2020 23:58:08 -0800 Subject: [PATCH] Combination of commits Fixes multiple issue with counters, with simplification Includes a change to the implicit else span in ast_lowering, so coverage of the implicit else no longer spans the `then` block. Adds coverage for unused closures and async function bodies. Fixes: #78542 Adding unreachable regions for known MIR missing from coverage map Cleaned up PR commits, and removed link-dead-code requirement and tests Coverage no longer depends on Issue #76038 (`-C link-dead-code` is no longer needed or enforced, so MSVC can use the same tests as Linux and MacOS now) Restrict adding unreachable regions to covered files Improved the code that adds coverage for uncalled functions (with MIR but not-codegenned) to avoid generating coverage in files not already included in the files with covered functions. Resolved last known issue requiring --emit llvm-ir workaround Fixed bugs in how unreachable code spans were added. --- compiler/rustc_ast_lowering/src/expr.rs | 2 +- compiler/rustc_codegen_llvm/src/attributes.rs | 3 - .../src/coverageinfo/mapgen.rs | 155 +- compiler/rustc_codegen_ssa/src/lib.rs | 1 + compiler/rustc_middle/src/arena.rs | 1 + compiler/rustc_middle/src/hir/map/mod.rs | 2 +- compiler/rustc_middle/src/query/mod.rs | 15 + compiler/rustc_middle/src/ty/codec.rs | 6 +- .../rustc_mir/src/transform/coverage/graph.rs | 20 +- .../rustc_mir/src/transform/coverage/mod.rs | 75 +- .../rustc_mir/src/transform/coverage/query.rs | 37 +- .../rustc_mir/src/transform/coverage/spans.rs | 110 +- compiler/rustc_session/src/options.rs | 3 +- compiler/rustc_session/src/session.rs | 28 +- .../source-based-code-coverage.md | 105 +- ...l_flow_simplification.hello.ConstProp.diff | 2 +- ...simplification.hello.PreCodegen.before.mir | 2 +- ...rage_graphviz.bar.InstrumentCoverage.0.dot | 2 +- ...age_graphviz.main.InstrumentCoverage.0.dot | 4 +- ...e_deref.do_not_miscompile.InstCombine.diff | 2 +- ...ument_coverage.bar.InstrumentCoverage.diff | 2 +- ...ment_coverage.main.InstrumentCoverage.diff | 6 +- ...e_38669.main.SimplifyCfg-initial.after.mir | 2 +- .../issue_41888.main.ElaborateDrops.after.mir | 4 +- ....main.SimplifyCfg-promote-consts.after.mir | 2 +- ...s.foo.MatchBranchSimplification.32bit.diff | 2 +- ...s.foo.MatchBranchSimplification.64bit.diff | 2 +- ...mplify_cfg.main.SimplifyCfg-early-opt.diff | 2 +- ...simplify_cfg.main.SimplifyCfg-initial.diff | 2 +- ...ain.SimplifyBranches-after-const-prop.diff | 2 +- ..._locals_fixedpoint.foo.SimplifyLocals.diff | 4 +- ...reachable.main.UnreachablePropagation.diff | 2 +- ...hable_asm.main.UnreachablePropagation.diff | 2 +- ...ble_asm_2.main.UnreachablePropagation.diff | 2 +- ...diverging.main.UnreachablePropagation.diff | 4 +- .../coverage-llvmir-deadcode/Makefile | 11 - .../coverage-llvmir/Makefile | 16 +- .../coverage-reports-deadcode/Makefile | 15 - .../expected_export_coverage.abort.json | 59 - .../expected_export_coverage.assert.json | 59 - .../expected_export_coverage.async.json | 59 - .../expected_export_coverage.closure.json | 59 - .../expected_export_coverage.conditions.json | 59 - .../expected_export_coverage.drop_trait.json | 59 - .../expected_export_coverage.generics.json | 59 - .../expected_export_coverage.if.json | 59 - .../expected_export_coverage.if_else.json | 59 - .../expected_export_coverage.inner_items.json | 59 - ...expected_export_coverage.lazy_boolean.json | 59 - ...pected_export_coverage.loops_branches.json | 59 - ...expected_export_coverage.nested_loops.json | 59 - .../expected_export_coverage.overflow.json | 59 - ...expected_export_coverage.panic_unwind.json | 59 - .../expected_export_coverage.partial_eq.json | 59 - .../expected_export_coverage.simple_loop.json | 59 - ...expected_export_coverage.simple_match.json | 59 - ...pected_export_coverage.tight_inf_loop.json | 59 - ...cted_export_coverage.try_error_result.json | 59 - .../expected_export_coverage.while.json | 59 - ...ected_export_coverage.while_early_ret.json | 59 - .../expected_export_coverage.yield.json | 59 - .../expected_show_coverage.abort.txt | 35 - .../expected_show_coverage.assert.txt | 34 - .../expected_show_coverage.async.txt | 66 - .../expected_show_coverage.closure.txt | 94 - .../expected_show_coverage.conditions.txt | 106 - .../expected_show_coverage.drop_trait.txt | 34 - .../expected_show_coverage.generics.txt | 67 - .../expected_show_coverage.if.txt | 30 - .../expected_show_coverage.if_else.txt | 41 - .../expected_show_coverage.inner_items.txt | 60 - .../expected_show_coverage.lazy_boolean.txt | 65 - ...xpected_show_coverage.loop_break_value.txt | 14 - .../expected_show_coverage.loops_branches.txt | 38 - .../expected_show_coverage.nested_loops.txt | 26 - .../expected_show_coverage.overflow.txt | 64 - .../expected_show_coverage.panic_unwind.txt | 50 - .../expected_show_coverage.partial_eq.txt | 111 - .../expected_show_coverage.simple_loop.txt | 37 - .../expected_show_coverage.simple_match.txt | 46 - .../expected_show_coverage.tight_inf_loop.txt | 6 - ...xpected_show_coverage.try_error_result.txt | 38 - .../expected_show_coverage.while.txt | 6 - ...expected_show_coverage.while_early_ret.txt | 48 - .../expected_show_coverage.yield.txt | 38 - .../expected_show_coverage_counters.abort.txt | 41 - ...expected_show_coverage_counters.assert.txt | 54 - .../expected_show_coverage_counters.async.txt | 85 - ...xpected_show_coverage_counters.closure.txt | 94 - ...cted_show_coverage_counters.conditions.txt | 304 - ...cted_show_coverage_counters.drop_trait.txt | 22 - ...pected_show_coverage_counters.generics.txt | 48 - .../expected_show_coverage_counters.if.txt | 21 - ...xpected_show_coverage_counters.if_else.txt | 30 - ...ted_show_coverage_counters.inner_items.txt | 44 - ...ed_show_coverage_counters.lazy_boolean.txt | 131 - ...how_coverage_counters.loop_break_value.txt | 6 - ..._show_coverage_counters.loops_branches.txt | 37 - ...ed_show_coverage_counters.nested_loops.txt | 69 - ...pected_show_coverage_counters.overflow.txt | 53 - ...ed_show_coverage_counters.panic_unwind.txt | 50 - ...cted_show_coverage_counters.partial_eq.txt | 53 - ...ted_show_coverage_counters.simple_loop.txt | 37 - ...ed_show_coverage_counters.simple_match.txt | 57 - ..._show_coverage_counters.tight_inf_loop.txt | 10 - ...how_coverage_counters.try_error_result.txt | 72 - .../expected_show_coverage_counters.while.txt | 18 - ...show_coverage_counters.while_early_ret.txt | 38 - .../expected_show_coverage_counters.yield.txt | 90 - .../coverage-reports/Makefile | 7 +- .../expected_export_coverage.abort.json | 24 +- .../expected_export_coverage.assert.json | 12 +- .../expected_export_coverage.async.json | 52 +- .../expected_export_coverage.closure.json | 52 +- .../expected_export_coverage.conditions.json | 16 +- .../expected_export_coverage.dead_code.json} | 42 +- .../expected_export_coverage.drop_trait.json | 16 +- .../expected_export_coverage.generics.json | 16 +- .../expected_export_coverage.if.json | 20 +- .../expected_export_coverage.if_else.json | 12 +- .../expected_export_coverage.inner_items.json | 8 +- ...expected_export_coverage.lazy_boolean.json | 24 +- ...pected_export_coverage.loops_branches.json | 12 +- ...expected_export_coverage.nested_loops.json | 24 +- .../expected_export_coverage.overflow.json | 24 +- ...expected_export_coverage.panic_unwind.json | 12 +- .../expected_export_coverage.partial_eq.json | 44 +- .../expected_export_coverage.simple_loop.json | 20 +- ...expected_export_coverage.simple_match.json | 20 +- ...pected_export_coverage.tight_inf_loop.json | 8 +- ...cted_export_coverage.try_error_result.json | 16 +- .../expected_export_coverage.while.json | 12 +- ...ected_export_coverage.while_early_ret.json | 12 +- .../expected_export_coverage.yield.json | 24 +- .../expected_show_coverage.abort.txt | 79 +- .../expected_show_coverage.assert.txt | 6 +- .../expected_show_coverage.async.txt | 185 +- .../expected_show_coverage.closure.txt | 76 +- .../expected_show_coverage.conditions.txt | 114 +- .../expected_show_coverage.dead_code.txt | 39 + .../expected_show_coverage.drop_trait.txt | 4 +- .../expected_show_coverage.generics.txt | 32 +- .../expected_show_coverage.if.txt | 14 +- .../expected_show_coverage.if_else.txt | 8 +- .../expected_show_coverage.inner_items.txt | 4 +- .../expected_show_coverage.lazy_boolean.txt | 11 +- .../expected_show_coverage.loops_branches.txt | 4 +- .../expected_show_coverage.nested_loops.txt | 8 +- .../expected_show_coverage.overflow.txt | 6 +- .../expected_show_coverage.panic_unwind.txt | 12 +- .../expected_show_coverage.partial_eq.txt | 61 +- .../expected_show_coverage.simple_loop.txt | 16 +- .../expected_show_coverage.simple_match.txt | 11 +- .../expected_show_coverage.tight_inf_loop.txt | 4 +- ...xpected_show_coverage.try_error_result.txt | 8 +- .../expected_show_coverage.while.txt | 2 +- ...expected_show_coverage.while_early_ret.txt | 9 +- .../expected_show_coverage.yield.txt | 2 +- .../expected_show_coverage_counters.abort.txt | 62 +- ...expected_show_coverage_counters.assert.txt | 17 +- .../expected_show_coverage_counters.async.txt | 384 +- ...xpected_show_coverage_counters.closure.txt | 139 +- ...cted_show_coverage_counters.conditions.txt | 387 +- ...ected_show_coverage_counters.dead_code.txt | 47 + ...cted_show_coverage_counters.drop_trait.txt | 16 +- ...pected_show_coverage_counters.generics.txt | 54 +- .../expected_show_coverage_counters.if.txt | 10 +- ...xpected_show_coverage_counters.if_else.txt | 6 +- ...ted_show_coverage_counters.inner_items.txt | 30 +- ...ed_show_coverage_counters.lazy_boolean.txt | 58 +- ...how_coverage_counters.loop_break_value.txt | 6 +- ..._show_coverage_counters.loops_branches.txt | 18 +- ...ed_show_coverage_counters.nested_loops.txt | 29 +- ...pected_show_coverage_counters.overflow.txt | 17 +- ...ed_show_coverage_counters.panic_unwind.txt | 17 +- ...cted_show_coverage_counters.partial_eq.txt | 57 +- ...ted_show_coverage_counters.simple_loop.txt | 20 +- ...ed_show_coverage_counters.simple_match.txt | 20 +- ..._show_coverage_counters.tight_inf_loop.txt | 12 +- ...how_coverage_counters.try_error_result.txt | 21 +- .../expected_show_coverage_counters.while.txt | 6 +- ...show_coverage_counters.while_early_ret.txt | 12 +- .../expected_show_coverage_counters.yield.txt | 18 +- .../coverage-spanview-deadcode/Makefile | 11 - ...ort.main.-------.InstrumentCoverage.0.html | 99 - ...ht_abort.-------.InstrumentCoverage.0.html | 164 - ...ert.main.-------.InstrumentCoverage.0.html | 103 - ...l_assert.-------.InstrumentCoverage.0.html | 97 - ...osure#0}.-------.InstrumentCoverage.0.html | 89 - ...osure#1}.-------.InstrumentCoverage.0.html | 89 - ...osure#2}.-------.InstrumentCoverage.0.html | 89 - ...block_on.-------.InstrumentCoverage.0.html | 226 - ...osure#0}.-------.InstrumentCoverage.0.html | 75 - ...osure#0}.-------.InstrumentCoverage.0.html | 80 - ...osure#0}.-------.InstrumentCoverage.0.html | 80 - ...osure#0}.-------.InstrumentCoverage.0.html | 82 - ...ync.main.-------.InstrumentCoverage.0.html | 133 - ...osure#0}.-------.InstrumentCoverage.0.html | 95 - ...osure#1}.-------.InstrumentCoverage.0.html | 95 - ...ure.main.-------.InstrumentCoverage.0.html | 4515 --------- ...ons.main.-------.InstrumentCoverage.0.html | 353 - ...ait.main.-------.InstrumentCoverage.0.html | 129 - ...#0}-drop.-------.InstrumentCoverage.0.html | 133 - ...ics.main.-------.InstrumentCoverage.0.html | 177 - ...strength.-------.InstrumentCoverage.0.html | 85 - ...#1}-drop.-------.InstrumentCoverage.0.html | 133 - .../if.main.-------.InstrumentCoverage.0.html | 178 - ...lse.main.-------.InstrumentCoverage.0.html | 173 - ...ait_func.-------.InstrumentCoverage.0.html | 93 - ...-in_func.-------.InstrumentCoverage.0.html | 178 - ...ait_func.-------.InstrumentCoverage.0.html | 101 - ...ems.main.-------.InstrumentCoverage.0.html | 187 - ...ean.main.-------.InstrumentCoverage.0.html | 229 - ...lue.main.-------.InstrumentCoverage.0.html | 128 - ...hes.main.-------.InstrumentCoverage.0.html | 161 - ...l#0}-fmt.-------.InstrumentCoverage.0.html | 104 - ...ops.main.-------.InstrumentCoverage.0.html | 153 - ...low.main.-------.InstrumentCoverage.0.html | 259 - ...overflow.-------.InstrumentCoverage.0.html | 397 - ...ind.main.-------.InstrumentCoverage.0.html | 103 - ...ht_panic.-------.InstrumentCoverage.0.html | 164 - ..._eq.main.-------.InstrumentCoverage.0.html | 295 - ...l#0}-new.-------.InstrumentCoverage.0.html | 104 - ...l#1}-cmp.-------.InstrumentCoverage.0.html | 76 - ...osure#0}.-------.InstrumentCoverage.0.html | 82 - ...osure#0}.-------.InstrumentCoverage.0.html | 83 - ...pl#2}-ge.-------.InstrumentCoverage.0.html | 92 - ...osure#0}.-------.InstrumentCoverage.0.html | 82 - ...osure#0}.-------.InstrumentCoverage.0.html | 83 - ...pl#2}-gt.-------.InstrumentCoverage.0.html | 92 - ...osure#0}.-------.InstrumentCoverage.0.html | 82 - ...osure#0}.-------.InstrumentCoverage.0.html | 83 - ...pl#2}-le.-------.InstrumentCoverage.0.html | 92 - ...osure#0}.-------.InstrumentCoverage.0.html | 82 - ...osure#0}.-------.InstrumentCoverage.0.html | 83 - ...pl#2}-lt.-------.InstrumentCoverage.0.html | 92 - ...tial_cmp.-------.InstrumentCoverage.0.html | 78 - ...pl#6}-eq.-------.InstrumentCoverage.0.html | 77 - ...pl#6}-ne.-------.InstrumentCoverage.0.html | 81 - ...l#7}-fmt.-------.InstrumentCoverage.0.html | 109 - ...oop.main.-------.InstrumentCoverage.0.html | 146 - ...tch.main.-------.InstrumentCoverage.0.html | 188 - ...oop.main.-------.InstrumentCoverage.0.html | 80 - ...ult.main.-------.InstrumentCoverage.0.html | 133 - ...ile.main.-------.InstrumentCoverage.0.html | 81 - ...ret.main.-------.InstrumentCoverage.0.html | 130 - ...osure#0}.-------.InstrumentCoverage.0.html | 79 - ...osure#1}.-------.InstrumentCoverage.0.html | 81 - ...eld.main.-------.InstrumentCoverage.0.html | 138 - .../coverage-spanview/Makefile | 5 - ...ort.main.-------.InstrumentCoverage.0.html | 50 +- ...ht_abort.-------.InstrumentCoverage.0.html | 2 +- ...ert.main.-------.InstrumentCoverage.0.html | 15 +- ...l_assert.-------.InstrumentCoverage.0.html | 14 +- ...sure#0}.-------.InstrumentCoverage.0.html} | 21 +- ...async.c.-------.InstrumentCoverage.0.html} | 15 +- ...sure#0}.-------.InstrumentCoverage.0.html} | 8 +- ...async.d.-------.InstrumentCoverage.0.html} | 6 +- ...sure#0}.-------.InstrumentCoverage.0.html} | 8 +- ...async.e.-------.InstrumentCoverage.0.html} | 6 +- ...osure#0}.-------.InstrumentCoverage.0.html | 27 +- ...osure#1}.-------.InstrumentCoverage.0.html | 27 +- ...osure#2}.-------.InstrumentCoverage.0.html | 27 +- ...osure#3}.-------.InstrumentCoverage.0.html | 4 +- ...block_on.-------.InstrumentCoverage.0.html | 315 +- ...osure#0}.-------.InstrumentCoverage.0.html | 4 +- .../async.f.-------.InstrumentCoverage.0.html | 2 +- ...osure#0}.-------.InstrumentCoverage.0.html | 4 +- ...sync.foo.-------.InstrumentCoverage.0.html | 2 +- ...osure#0}.-------.InstrumentCoverage.0.html | 14 +- .../async.g.-------.InstrumentCoverage.0.html | 5 +- ...osure#0}.-------.InstrumentCoverage.0.html | 14 +- .../async.h.-------.InstrumentCoverage.0.html | 6 +- ...osure#0}.-------.InstrumentCoverage.0.html | 25 +- .../async.i.-------.InstrumentCoverage.0.html | 8 +- ...sync.j-c.-------.InstrumentCoverage.0.html | 92 + ...sync.j-d.-------.InstrumentCoverage.0.html | 75 + ...sync.j-f.-------.InstrumentCoverage.0.html | 75 + .../async.j.-------.InstrumentCoverage.0.html | 108 + .../async.k.-------.InstrumentCoverage.0.html | 80 + .../async.l.-------.InstrumentCoverage.0.html | 80 + ...ync.main.-------.InstrumentCoverage.0.html | 156 +- ...osure#0}.-------.InstrumentCoverage.0.html | 26 +- ...ure#10}.-------.InstrumentCoverage.0.html} | 30 +- ...ure#11}.-------.InstrumentCoverage.0.html} | 30 +- ...osure#1}.-------.InstrumentCoverage.0.html | 26 +- ...osure#2}.-------.InstrumentCoverage.0.html | 80 +- ...osure#3}.-------.InstrumentCoverage.0.html | 42 +- ...sure#4}.-------.InstrumentCoverage.0.html} | 10 +- ...osure#5}.-------.InstrumentCoverage.0.html | 115 + ...sure#6}.-------.InstrumentCoverage.0.html} | 33 +- ...osure#7}.-------.InstrumentCoverage.0.html | 115 + ...sure#8}.-------.InstrumentCoverage.0.html} | 26 +- ...sure#9}.-------.InstrumentCoverage.0.html} | 26 +- ...ure.main.-------.InstrumentCoverage.0.html | 9024 ++++++++++++++--- ...ons.main.-------.InstrumentCoverage.0.html | 393 +- ...ode.main.-------.InstrumentCoverage.0.html | 151 + ...nused_fn.-------.InstrumentCoverage.0.html | 151 + ..._library.-------.InstrumentCoverage.0.html | 151 + ...ait.main.-------.InstrumentCoverage.0.html | 57 +- ...#0}-drop.-------.InstrumentCoverage.0.html | 4 +- ...ics.main.-------.InstrumentCoverage.0.html | 115 +- ...strength.-------.InstrumentCoverage.0.html | 4 +- ...#1}-drop.-------.InstrumentCoverage.0.html | 4 +- .../if.main.-------.InstrumentCoverage.0.html | 145 +- ...lse.main.-------.InstrumentCoverage.0.html | 44 +- ...ait_func.-------.InstrumentCoverage.0.html | 4 +- ...-in_func.-------.InstrumentCoverage.0.html | 31 +- ...ait_func.-------.InstrumentCoverage.0.html | 4 +- ...ems.main.-------.InstrumentCoverage.0.html | 43 +- ...ean.main.-------.InstrumentCoverage.0.html | 119 +- ...lue.main.-------.InstrumentCoverage.0.html | 4 +- ...hes.main.-------.InstrumentCoverage.0.html | 4 +- ...l#0}-fmt.-------.InstrumentCoverage.0.html | 23 +- ...ops.main.-------.InstrumentCoverage.0.html | 70 +- ...low.main.-------.InstrumentCoverage.0.html | 15 +- ...overflow.-------.InstrumentCoverage.0.html | 17 +- ...ind.main.-------.InstrumentCoverage.0.html | 15 +- ...ht_panic.-------.InstrumentCoverage.0.html | 2 +- ..._eq.main.-------.InstrumentCoverage.0.html | 4 +- ...l#0}-new.-------.InstrumentCoverage.0.html | 10 +- ...l#1}-cmp.-------.InstrumentCoverage.0.html | 4 +- ...osure#0}.-------.InstrumentCoverage.0.html | 2 +- ...pl#2}-ge.-------.InstrumentCoverage.0.html | 2 +- ...osure#0}.-------.InstrumentCoverage.0.html | 2 +- ...pl#2}-gt.-------.InstrumentCoverage.0.html | 2 +- ...osure#0}.-------.InstrumentCoverage.0.html | 2 +- ...pl#2}-le.-------.InstrumentCoverage.0.html | 2 +- ...osure#0}.-------.InstrumentCoverage.0.html | 2 +- ...pl#2}-lt.-------.InstrumentCoverage.0.html | 2 +- ...tial_cmp.-------.InstrumentCoverage.0.html | 6 +- ...total_eq.-------.InstrumentCoverage.0.html | 2 +- ...pl#6}-eq.-------.InstrumentCoverage.0.html | 5 +- ...pl#6}-ne.-------.InstrumentCoverage.0.html | 9 +- ...oop.main.-------.InstrumentCoverage.0.html | 122 +- ...tch.main.-------.InstrumentCoverage.0.html | 98 +- ...oop.main.-------.InstrumentCoverage.0.html | 15 +- ...ult.call.-------.InstrumentCoverage.0.html | 7 +- ...ult.main.-------.InstrumentCoverage.0.html | 15 +- ...ile.main.-------.InstrumentCoverage.0.html | 7 +- ...ret.main.-------.InstrumentCoverage.0.html | 24 +- ...osure#0}.-------.InstrumentCoverage.0.html | 4 +- ...osure#1}.-------.InstrumentCoverage.0.html | 4 +- ...eld.main.-------.InstrumentCoverage.0.html | 2 +- src/test/run-make-fulldeps/coverage/abort.rs | 35 +- src/test/run-make-fulldeps/coverage/async.rs | 71 +- .../run-make-fulldeps/coverage/closure.rs | 62 + .../run-make-fulldeps/coverage/conditions.rs | 20 +- .../coverage/coverage_tools.mk | 29 +- .../run-make-fulldeps/coverage/dead_code.rs | 37 + .../run-make-fulldeps/coverage/generics.rs | 6 +- .../coverage/panic_unwind.rs | 8 +- .../run-make-fulldeps/coverage/partial_eq.rs | 57 +- .../coverage/while_early_ret.rs | 5 - 354 files changed, 12634 insertions(+), 20486 deletions(-) delete mode 100644 src/test/run-make-fulldeps/coverage-llvmir-deadcode/Makefile delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/Makefile delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.abort.json delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.assert.json delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.async.json delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.closure.json delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.conditions.json delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.drop_trait.json delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.generics.json delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.if.json delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.if_else.json delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.inner_items.json delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.lazy_boolean.json delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.loops_branches.json delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.nested_loops.json delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.overflow.json delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.panic_unwind.json delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.partial_eq.json delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.simple_loop.json delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.simple_match.json delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.tight_inf_loop.json delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.try_error_result.json delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.while.json delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.while_early_ret.json delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.yield.json delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.abort.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.assert.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.async.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.closure.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.conditions.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.drop_trait.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.generics.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.if.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.if_else.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.inner_items.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.lazy_boolean.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.loop_break_value.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.loops_branches.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.nested_loops.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.overflow.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.panic_unwind.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.partial_eq.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.simple_loop.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.simple_match.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.tight_inf_loop.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.try_error_result.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.while.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.while_early_ret.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.yield.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.abort.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.assert.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.async.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.closure.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.conditions.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.drop_trait.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.generics.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.if.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.if_else.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.inner_items.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.lazy_boolean.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.loop_break_value.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.loops_branches.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.nested_loops.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.overflow.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.panic_unwind.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.partial_eq.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.simple_loop.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.simple_match.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.tight_inf_loop.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.try_error_result.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.while.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.while_early_ret.txt delete mode 100644 src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.yield.txt rename src/test/run-make-fulldeps/{coverage-reports-deadcode/expected_export_coverage.loop_break_value.json => coverage-reports/expected_export_coverage.dead_code.json} (52%) create mode 100644 src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.dead_code.txt create mode 100644 src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.dead_code.txt delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/Makefile delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.abort/abort.main.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.abort/abort.might_abort.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.assert/assert.main.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.assert/assert.might_fail_assert.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#0}.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#1}.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#2}.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.executor-block_on.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.foo-{closure#0}.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.g-{closure#0}.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.h-{closure#0}.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.i-{closure#0}.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.main.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.closure/closure.main-{closure#0}.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.closure/closure.main-{closure#1}.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.closure/closure.main.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.conditions/conditions.main.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.drop_trait/drop_trait.main.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.drop_trait/drop_trait.{impl#0}-drop.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.generics/generics.main.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.generics/generics.{impl#0}-set_strength.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.generics/generics.{impl#1}-drop.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.if/if.main.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.if_else/if_else.main.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.inner_items/inner_items.main-InTrait-default_trait_func.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.inner_items/inner_items.main-in_func.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.inner_items/inner_items.main-{impl#0}-trait_func.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.inner_items/inner_items.main.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.lazy_boolean/lazy_boolean.main.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.loop_break_value/loop_break_value.main.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.loops_branches/loops_branches.main.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.loops_branches/loops_branches.{impl#0}-fmt.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.nested_loops/nested_loops.main.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.overflow/overflow.main.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.overflow/overflow.might_overflow.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.panic_unwind/panic_unwind.main.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.panic_unwind/panic_unwind.might_panic.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.main.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#0}-new.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#1}-cmp.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-ge-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-ge-{closure#0}.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-ge.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-gt-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-gt-{closure#0}.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-gt.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-le-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-le-{closure#0}.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-le.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-lt-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-lt-{closure#0}.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-lt.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-partial_cmp.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#6}-eq.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#6}-ne.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#7}-fmt.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.simple_loop/simple_loop.main.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.simple_match/simple_match.main.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.tight_inf_loop/tight_inf_loop.main.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.try_error_result/try_error_result.main.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.while/while.main.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.while_early_ret/while_early_ret.main.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.yield/yield.main-{closure#0}.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.yield/yield.main-{closure#1}.-------.InstrumentCoverage.0.html delete mode 100644 src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.yield/yield.main.-------.InstrumentCoverage.0.html rename src/test/run-make-fulldeps/{coverage-spanview-deadcode/expected_mir_dump.try_error_result/try_error_result.call.-------.InstrumentCoverage.0.html => coverage-spanview/expected_mir_dump.async/async.c-{closure#0}.-------.InstrumentCoverage.0.html} (65%) rename src/test/run-make-fulldeps/{coverage-spanview-deadcode/expected_mir_dump.async/async.i.-------.InstrumentCoverage.0.html => coverage-spanview/expected_mir_dump.async/async.c.-------.InstrumentCoverage.0.html} (77%) rename src/test/run-make-fulldeps/{coverage-spanview-deadcode/expected_mir_dump.async/async.f-{closure#0}.-------.InstrumentCoverage.0.html => coverage-spanview/expected_mir_dump.async/async.d-{closure#0}.-------.InstrumentCoverage.0.html} (79%) rename src/test/run-make-fulldeps/{coverage-spanview-deadcode/expected_mir_dump.async/async.f.-------.InstrumentCoverage.0.html => coverage-spanview/expected_mir_dump.async/async.d.-------.InstrumentCoverage.0.html} (81%) rename src/test/run-make-fulldeps/{coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#4}-assert_receiver_is_total_eq.-------.InstrumentCoverage.0.html => coverage-spanview/expected_mir_dump.async/async.e-{closure#0}.-------.InstrumentCoverage.0.html} (78%) rename src/test/run-make-fulldeps/{coverage-spanview-deadcode/expected_mir_dump.async/async.foo.-------.InstrumentCoverage.0.html => coverage-spanview/expected_mir_dump.async/async.e.-------.InstrumentCoverage.0.html} (80%) create mode 100644 src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.j-c.-------.InstrumentCoverage.0.html create mode 100644 src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.j-d.-------.InstrumentCoverage.0.html create mode 100644 src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.j-f.-------.InstrumentCoverage.0.html create mode 100644 src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.j.-------.InstrumentCoverage.0.html create mode 100644 src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.k.-------.InstrumentCoverage.0.html create mode 100644 src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.l.-------.InstrumentCoverage.0.html rename src/test/run-make-fulldeps/{coverage-spanview-deadcode/expected_mir_dump.closure/closure.main-{closure#2}.-------.InstrumentCoverage.0.html => coverage-spanview/expected_mir_dump.closure/closure.main-{closure#10}.-------.InstrumentCoverage.0.html} (65%) rename src/test/run-make-fulldeps/{coverage-spanview-deadcode/expected_mir_dump.closure/closure.main-{closure#3}.-------.InstrumentCoverage.0.html => coverage-spanview/expected_mir_dump.closure/closure.main-{closure#11}.-------.InstrumentCoverage.0.html} (65%) rename src/test/run-make-fulldeps/{coverage-spanview-deadcode/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#3}.-------.InstrumentCoverage.0.html => coverage-spanview/expected_mir_dump.closure/closure.main-{closure#4}.-------.InstrumentCoverage.0.html} (72%) create mode 100644 src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main-{closure#5}.-------.InstrumentCoverage.0.html rename src/test/run-make-fulldeps/{coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#8}-clone.-------.InstrumentCoverage.0.html => coverage-spanview/expected_mir_dump.closure/closure.main-{closure#6}.-------.InstrumentCoverage.0.html} (60%) create mode 100644 src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main-{closure#7}.-------.InstrumentCoverage.0.html rename src/test/run-make-fulldeps/{coverage-spanview-deadcode/expected_mir_dump.async/async.g.-------.InstrumentCoverage.0.html => coverage-spanview/expected_mir_dump.closure/closure.main-{closure#8}.-------.InstrumentCoverage.0.html} (58%) rename src/test/run-make-fulldeps/{coverage-spanview-deadcode/expected_mir_dump.async/async.h.-------.InstrumentCoverage.0.html => coverage-spanview/expected_mir_dump.closure/closure.main-{closure#9}.-------.InstrumentCoverage.0.html} (58%) create mode 100644 src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.dead_code/dead_code.main.-------.InstrumentCoverage.0.html create mode 100644 src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.dead_code/dead_code.unused_fn.-------.InstrumentCoverage.0.html create mode 100644 src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.dead_code/dead_code.unused_pub_fn_not_in_library.-------.InstrumentCoverage.0.html create mode 100644 src/test/run-make-fulldeps/coverage/dead_code.rs diff --git a/compiler/rustc_ast_lowering/src/expr.rs b/compiler/rustc_ast_lowering/src/expr.rs index 314e5103cc2..e0e78a4d609 100644 --- a/compiler/rustc_ast_lowering/src/expr.rs +++ b/compiler/rustc_ast_lowering/src/expr.rs @@ -347,7 +347,7 @@ impl<'hir> LoweringContext<'_, 'hir> { // `_ => else_block` where `else_block` is `{}` if there's `None`: let else_pat = self.pat_wild(span); let (else_expr, contains_else_clause) = match else_opt { - None => (self.expr_block_empty(span), false), + None => (self.expr_block_empty(span.shrink_to_hi()), false), Some(els) => (self.lower_expr(els), true), }; let else_arm = self.arm(else_pat, else_expr); diff --git a/compiler/rustc_codegen_llvm/src/attributes.rs b/compiler/rustc_codegen_llvm/src/attributes.rs index 62a7986c194..97c38e04bc1 100644 --- a/compiler/rustc_codegen_llvm/src/attributes.rs +++ b/compiler/rustc_codegen_llvm/src/attributes.rs @@ -127,9 +127,6 @@ fn set_probestack(cx: &CodegenCx<'ll, '_>, llfn: &'ll Value) { return; } - // FIXME(richkadel): Make sure probestack plays nice with `-Z instrument-coverage` - // or disable it if not, similar to above early exits. - // Flag our internal `__rust_probestack` function as the stack probe symbol. // This is defined in the `compiler-builtins` crate for each architecture. llvm::AddFunctionAttrStringValue( diff --git a/compiler/rustc_codegen_llvm/src/coverageinfo/mapgen.rs b/compiler/rustc_codegen_llvm/src/coverageinfo/mapgen.rs index 85aaa7e8893..ced3f21f744 100644 --- a/compiler/rustc_codegen_llvm/src/coverageinfo/mapgen.rs +++ b/compiler/rustc_codegen_llvm/src/coverageinfo/mapgen.rs @@ -3,11 +3,14 @@ use crate::coverageinfo; use crate::llvm; use llvm::coverageinfo::CounterMappingRegion; -use rustc_codegen_ssa::coverageinfo::map::{Counter, CounterExpression}; +use rustc_codegen_ssa::coverageinfo::map::{Counter, CounterExpression, FunctionCoverage}; use rustc_codegen_ssa::traits::ConstMethods; -use rustc_data_structures::fx::FxIndexSet; +use rustc_data_structures::fx::{FxHashMap, FxHashSet, FxIndexSet}; +use rustc_hir::def_id::{DefId, DefIdSet, LOCAL_CRATE}; use rustc_llvm::RustString; use rustc_middle::mir::coverage::CodeRegion; +use rustc_middle::ty::{Instance, TyCtxt}; +use rustc_span::Symbol; use std::ffi::CString; @@ -26,14 +29,17 @@ use tracing::debug; /// undocumented details in Clang's implementation (that may or may not be important) were also /// replicated for Rust's Coverage Map. pub fn finalize<'ll, 'tcx>(cx: &CodegenCx<'ll, 'tcx>) { + let tcx = cx.tcx; // Ensure LLVM supports Coverage Map Version 4 (encoded as a zero-based value: 3). // If not, the LLVM Version must be less than 11. let version = coverageinfo::mapping_version(); if version != 3 { - cx.tcx.sess.fatal("rustc option `-Z instrument-coverage` requires LLVM 11 or higher."); + tcx.sess.fatal("rustc option `-Z instrument-coverage` requires LLVM 11 or higher."); } - let function_coverage_map = match cx.coverage_context() { + debug!("Generating coverage map for CodegenUnit: `{}`", cx.codegen_unit.name()); + + let mut function_coverage_map = match cx.coverage_context() { Some(ctx) => ctx.take_function_coverage_map(), None => return, }; @@ -42,14 +48,15 @@ pub fn finalize<'ll, 'tcx>(cx: &CodegenCx<'ll, 'tcx>) { return; } + add_unreachable_coverage(tcx, &mut function_coverage_map); + let mut mapgen = CoverageMapGenerator::new(); // Encode coverage mappings and generate function records let mut function_data = Vec::new(); for (instance, function_coverage) in function_coverage_map { - debug!("Generate coverage map for: {:?}", instance); - - let mangled_function_name = cx.tcx.symbol_name(instance).to_string(); + debug!("Generate function coverage for {}, {:?}", cx.codegen_unit.name(), instance); + let mangled_function_name = tcx.symbol_name(instance).to_string(); let function_source_hash = function_coverage.source_hash(); let (expressions, counter_regions) = function_coverage.get_expressions_and_counter_regions(); @@ -228,3 +235,137 @@ fn save_function_record( let is_used = true; coverageinfo::save_func_record_to_mod(cx, func_name_hash, func_record_val, is_used); } + +/// When finalizing the coverage map, `FunctionCoverage` only has the `CodeRegion`s and counters for +/// the functions that went through codegen; such as public functions and "used" functions +/// (functions referenced by other "used" or public items). Any other functions considered unused, +/// or "Unreachable" were still parsed and processed through the MIR stage. +/// +/// We can find the unreachable functions by the set different of all MIR `DefId`s (`tcx` query +/// `mir_keys`) minus the codegenned `DefId`s (`tcx` query `collect_and_partition_mono_items`). +/// +/// *HOWEVER* the codegenned `DefId`s are partitioned across multiple `CodegenUnit`s (CGUs), and +/// this function is processing a `function_coverage_map` for the functions (`Instance`/`DefId`) +/// allocated to only one of those CGUs. We must NOT inject any "Unreachable" functions's +/// `CodeRegion`s more than once, so we have to pick which CGU's `function_coverage_map` to add +/// each "Unreachable" function to. +/// +/// Some constraints: +/// +/// 1. The file name of an "Unreachable" function must match the file name of the existing +/// codegenned (covered) function to which the unreachable code regions will be added. +/// 2. The function to which the unreachable code regions will be added must not be a genaric +/// function (must not have type parameters) because the coverage tools will get confused +/// if the codegenned function has more than one instantiation and additional `CodeRegion`s +/// attached to only one of those instantiations. +fn add_unreachable_coverage<'tcx>( + tcx: TyCtxt<'tcx>, + function_coverage_map: &mut FxHashMap, FunctionCoverage<'tcx>>, +) { + // Note: If the crate *only* defines generic functions, there are no codegenerated non-generic + // functions to add any unreachable code to. In this case, the unreachable code regions will + // have no coverage, instead of having coverage with zero executions. + // + // This is probably still an improvement over Clang, which does not generate any coverage + // for uninstantiated template functions. + + let has_non_generic_def_ids = + function_coverage_map.keys().any(|instance| instance.def.attrs(tcx).len() == 0); + + if !has_non_generic_def_ids { + // There are no non-generic functions to add unreachable `CodeRegion`s to + return; + } + + let all_def_ids: DefIdSet = + tcx.mir_keys(LOCAL_CRATE).iter().map(|local_def_id| local_def_id.to_def_id()).collect(); + + let (codegenned_def_ids, _) = tcx.collect_and_partition_mono_items(LOCAL_CRATE); + + let mut unreachable_def_ids_by_file: FxHashMap> = FxHashMap::default(); + for &non_codegenned_def_id in all_def_ids.difference(codegenned_def_ids) { + // Make sure the non-codegenned (unreachable) function has a file_name + if let Some(non_codegenned_file_name) = tcx.covered_file_name(non_codegenned_def_id) { + let def_ids = unreachable_def_ids_by_file + .entry(*non_codegenned_file_name) + .or_insert_with(|| Vec::new()); + def_ids.push(non_codegenned_def_id); + } + } + + if unreachable_def_ids_by_file.is_empty() { + // There are no unreachable functions with file names to add (in any CGU) + return; + } + + // Since there may be multiple `CodegenUnit`s, some codegenned_def_ids may be codegenned in a + // different CGU, and will be added to the function_coverage_map for each CGU. Determine which + // function_coverage_map has the responsibility for publishing unreachable coverage + // based on file name: + // + // For each covered file name, sort ONLY the non-generic codegenned_def_ids, and if + // covered_def_ids.contains(the first def_id) for a given file_name, add the unreachable code + // region in this function_coverage_map. Otherwise, ignore it and assume another CGU's + // function_coverage_map will be adding it (because it will be first for one, and only one, + // of them). + let mut sorted_codegenned_def_ids: Vec = + codegenned_def_ids.iter().map(|def_id| *def_id).collect(); + sorted_codegenned_def_ids.sort_unstable(); + + let mut first_covered_def_id_by_file: FxHashMap = FxHashMap::default(); + for &def_id in sorted_codegenned_def_ids.iter() { + // Only consider non-generic functions, to potentially add unreachable code regions + if tcx.generics_of(def_id).count() == 0 { + if let Some(covered_file_name) = tcx.covered_file_name(def_id) { + // Only add files known to have unreachable functions + if unreachable_def_ids_by_file.contains_key(covered_file_name) { + first_covered_def_id_by_file.entry(*covered_file_name).or_insert(def_id); + } + } + } + } + + // Get the set of def_ids with coverage regions, known by *this* CoverageContext. + let cgu_covered_def_ids: DefIdSet = + function_coverage_map.keys().map(|instance| instance.def.def_id()).collect(); + + let mut cgu_covered_files: FxHashSet = first_covered_def_id_by_file + .iter() + .filter_map( + |(&file_name, def_id)| { + if cgu_covered_def_ids.contains(def_id) { Some(file_name) } else { None } + }, + ) + .collect(); + + // Find the first covered, non-generic function (instance) for each cgu_covered_file. Take the + // unreachable code regions for that file, and add them to the function. + // + // There are three `for` loops here, but (a) the lists have already been reduced to the minimum + // required values, the lists are further reduced (by `remove()` calls) when elements are no + // longer needed, and there are several opportunities to branch out of loops early. + for (instance, function_coverage) in function_coverage_map.iter_mut() { + if instance.def.attrs(tcx).len() > 0 { + continue; + } + // The covered function is not generic... + let covered_def_id = instance.def.def_id(); + if let Some(covered_file_name) = tcx.covered_file_name(covered_def_id) { + if !cgu_covered_files.remove(&covered_file_name) { + continue; + } + // The covered function's file is one of the files with unreachable code regions, so + // all of the unreachable code regions for this file will be added to this function. + for def_id in + unreachable_def_ids_by_file.remove(&covered_file_name).into_iter().flatten() + { + for ®ion in tcx.covered_code_regions(def_id) { + function_coverage.add_unreachable_region(region.clone()); + } + } + if cgu_covered_files.is_empty() { + break; + } + } + } +} diff --git a/compiler/rustc_codegen_ssa/src/lib.rs b/compiler/rustc_codegen_ssa/src/lib.rs index 70b92b234e9..8ec1eed4404 100644 --- a/compiler/rustc_codegen_ssa/src/lib.rs +++ b/compiler/rustc_codegen_ssa/src/lib.rs @@ -2,6 +2,7 @@ #![feature(bool_to_option)] #![feature(option_expect_none)] #![feature(box_patterns)] +#![feature(drain_filter)] #![feature(try_blocks)] #![feature(in_band_lifetimes)] #![feature(nll)] diff --git a/compiler/rustc_middle/src/arena.rs b/compiler/rustc_middle/src/arena.rs index 672073b1d34..9a42bbe7bac 100644 --- a/compiler/rustc_middle/src/arena.rs +++ b/compiler/rustc_middle/src/arena.rs @@ -32,6 +32,7 @@ macro_rules! arena_types { [decode] borrowck_result: rustc_middle::mir::BorrowCheckResult<$tcx>, [decode] unsafety_check_result: rustc_middle::mir::UnsafetyCheckResult, + [decode] code_region: rustc_middle::mir::coverage::CodeRegion, [] const_allocs: rustc_middle::mir::interpret::Allocation, // Required for the incremental on-disk cache [few] mir_keys: rustc_hir::def_id::DefIdSet, diff --git a/compiler/rustc_middle/src/hir/map/mod.rs b/compiler/rustc_middle/src/hir/map/mod.rs index 5e36362ec59..598e28c1a3a 100644 --- a/compiler/rustc_middle/src/hir/map/mod.rs +++ b/compiler/rustc_middle/src/hir/map/mod.rs @@ -47,7 +47,7 @@ fn fn_decl<'hir>(node: Node<'hir>) -> Option<&'hir FnDecl<'hir>> { } } -fn fn_sig<'hir>(node: Node<'hir>) -> Option<&'hir FnSig<'hir>> { +pub fn fn_sig<'hir>(node: Node<'hir>) -> Option<&'hir FnSig<'hir>> { match &node { Node::Item(Item { kind: ItemKind::Fn(sig, _, _), .. }) | Node::TraitItem(TraitItem { kind: TraitItemKind::Fn(sig, _), .. }) diff --git a/compiler/rustc_middle/src/query/mod.rs b/compiler/rustc_middle/src/query/mod.rs index 7822ecc2c1f..1b5f7a2c12e 100644 --- a/compiler/rustc_middle/src/query/mod.rs +++ b/compiler/rustc_middle/src/query/mod.rs @@ -346,6 +346,21 @@ rustc_queries! { cache_on_disk_if { key.is_local() } } + /// Returns the name of the file that contains the function body, if instrumented for coverage. + query covered_file_name(key: DefId) -> Option { + desc { |tcx| "retrieving the covered file name, if instrumented, for `{}`", tcx.def_path_str(key) } + storage(ArenaCacheSelector<'tcx>) + cache_on_disk_if { key.is_local() } + } + + /// Returns the `CodeRegions` for a function that has instrumented coverage, in case the + /// function was optimized out before codegen, and before being added to the Coverage Map. + query covered_code_regions(key: DefId) -> Vec<&'tcx mir::coverage::CodeRegion> { + desc { |tcx| "retrieving the covered `CodeRegion`s, if instrumented, for `{}`", tcx.def_path_str(key) } + storage(ArenaCacheSelector<'tcx>) + cache_on_disk_if { key.is_local() } + } + /// The `DefId` is the `DefId` of the containing MIR body. Promoteds do not have their own /// `DefId`. This function returns all promoteds in the specified body. The body references /// promoteds by the `DefId` and the `mir::Promoted` index. This is necessary, because diff --git a/compiler/rustc_middle/src/ty/codec.rs b/compiler/rustc_middle/src/ty/codec.rs index 1def4936860..b2fc3710cd6 100644 --- a/compiler/rustc_middle/src/ty/codec.rs +++ b/compiler/rustc_middle/src/ty/codec.rs @@ -162,7 +162,8 @@ encodable_via_deref! { ty::Region<'tcx>, &'tcx mir::Body<'tcx>, &'tcx mir::UnsafetyCheckResult, - &'tcx mir::BorrowCheckResult<'tcx> + &'tcx mir::BorrowCheckResult<'tcx>, + &'tcx mir::coverage::CodeRegion } pub trait TyDecoder<'tcx>: Decoder { @@ -376,7 +377,8 @@ impl_decodable_via_ref! { &'tcx Allocation, &'tcx mir::Body<'tcx>, &'tcx mir::UnsafetyCheckResult, - &'tcx mir::BorrowCheckResult<'tcx> + &'tcx mir::BorrowCheckResult<'tcx>, + &'tcx mir::coverage::CodeRegion } #[macro_export] diff --git a/compiler/rustc_mir/src/transform/coverage/graph.rs b/compiler/rustc_mir/src/transform/coverage/graph.rs index 9d375633dcf..7db88a686a7 100644 --- a/compiler/rustc_mir/src/transform/coverage/graph.rs +++ b/compiler/rustc_mir/src/transform/coverage/graph.rs @@ -118,18 +118,8 @@ impl CoverageGraph { match term.kind { TerminatorKind::Return { .. } - // FIXME(richkadel): Add test(s) for `Abort` coverage. | TerminatorKind::Abort - // FIXME(richkadel): Add test(s) for `Assert` coverage. - // Should `Assert` be handled like `FalseUnwind` instead? Since we filter out unwind - // branches when creating the BCB CFG, aren't `Assert`s (without unwinds) just like - // `FalseUnwinds` (which are kind of like `Goto`s)? - | TerminatorKind::Assert { .. } - // FIXME(richkadel): Add test(s) for `Yield` coverage, and confirm coverage is - // sensible for code using the `yield` keyword. | TerminatorKind::Yield { .. } - // FIXME(richkadel): Also add coverage tests using async/await, and threading. - | TerminatorKind::SwitchInt { .. } => { // The `bb` has more than one _outgoing_ edge, or exits the function. Save the // current sequence of `basic_blocks` gathered to this point, as a new @@ -147,6 +137,14 @@ impl CoverageGraph { // `Terminator`s `successors()` list) checking the number of successors won't // work. } + + // The following `TerminatorKind`s are either not expected outside an unwind branch, + // or they should not (under normal circumstances) branch. Coverage graphs are + // simplified by assuring coverage results are accurate for well-behaved programs. + // Programs that panic and unwind may record slightly inaccurate coverage results + // for a coverage region containing the `Terminator` that began the panic. This + // is as intended. (See Issue #78544 for a possible future option to support + // coverage in test programs that panic.) TerminatorKind::Goto { .. } | TerminatorKind::Resume | TerminatorKind::Unreachable @@ -154,6 +152,7 @@ impl CoverageGraph { | TerminatorKind::DropAndReplace { .. } | TerminatorKind::Call { .. } | TerminatorKind::GeneratorDrop + | TerminatorKind::Assert { .. } | TerminatorKind::FalseEdge { .. } | TerminatorKind::FalseUnwind { .. } | TerminatorKind::InlineAsm { .. } => {} @@ -278,6 +277,7 @@ rustc_index::newtype_index! { /// A node in the [control-flow graph][CFG] of CoverageGraph. pub(super) struct BasicCoverageBlock { DEBUG_FORMAT = "bcb{}", + const START_BCB = 0, } } diff --git a/compiler/rustc_mir/src/transform/coverage/mod.rs b/compiler/rustc_mir/src/transform/coverage/mod.rs index 192bb6680e4..18249530577 100644 --- a/compiler/rustc_mir/src/transform/coverage/mod.rs +++ b/compiler/rustc_mir/src/transform/coverage/mod.rs @@ -88,6 +88,7 @@ struct Instrumentor<'a, 'tcx> { pass_name: &'a str, tcx: TyCtxt<'tcx>, mir_body: &'a mut mir::Body<'tcx>, + fn_sig_span: Span, body_span: Span, basic_coverage_blocks: CoverageGraph, coverage_counters: CoverageCounters, @@ -95,14 +96,19 @@ struct Instrumentor<'a, 'tcx> { impl<'a, 'tcx> Instrumentor<'a, 'tcx> { fn new(pass_name: &'a str, tcx: TyCtxt<'tcx>, mir_body: &'a mut mir::Body<'tcx>) -> Self { - let hir_body = hir_body(tcx, mir_body.source.def_id()); + let (some_fn_sig, hir_body) = fn_sig_and_body(tcx, mir_body.source.def_id()); let body_span = hir_body.value.span; + let fn_sig_span = match some_fn_sig { + Some(fn_sig) => fn_sig.span.with_hi(body_span.lo()), + None => body_span.shrink_to_lo(), + }; let function_source_hash = hash_mir_source(tcx, hir_body); let basic_coverage_blocks = CoverageGraph::from_mir(mir_body); Self { pass_name, tcx, mir_body, + fn_sig_span, body_span, basic_coverage_blocks, coverage_counters: CoverageCounters::new(function_source_hash), @@ -114,9 +120,15 @@ impl<'a, 'tcx> Instrumentor<'a, 'tcx> { let source_map = tcx.sess.source_map(); let mir_source = self.mir_body.source; let def_id = mir_source.def_id(); + let fn_sig_span = self.fn_sig_span; let body_span = self.body_span; - debug!("instrumenting {:?}, span: {}", def_id, source_map.span_to_string(body_span)); + debug!( + "instrumenting {:?}, fn sig span: {}, body span: {}", + def_id, + source_map.span_to_string(fn_sig_span), + source_map.span_to_string(body_span) + ); let mut graphviz_data = debug::GraphvizData::new(); let mut debug_used_expressions = debug::UsedExpressions::new(); @@ -138,6 +150,7 @@ impl<'a, 'tcx> Instrumentor<'a, 'tcx> { // Compute `CoverageSpan`s from the `CoverageGraph`. let coverage_spans = CoverageSpans::generate_coverage_spans( &self.mir_body, + fn_sig_span, body_span, &self.basic_coverage_blocks, ); @@ -272,49 +285,15 @@ impl<'a, 'tcx> Instrumentor<'a, 'tcx> { bug!("Every BasicCoverageBlock should have a Counter or Expression"); }; graphviz_data.add_bcb_coverage_span_with_counter(bcb, &covspan, &counter_kind); - // FIXME(#78542): Can spans for `TerminatorKind::Goto` be improved to avoid special - // cases? - let some_code_region = if self.is_code_region_redundant(bcb, span, body_span) { - None - } else { - Some(make_code_region(file_name, &source_file, span, body_span)) - }; - inject_statement(self.mir_body, counter_kind, self.bcb_last_bb(bcb), some_code_region); + inject_statement( + self.mir_body, + counter_kind, + self.bcb_last_bb(bcb), + Some(make_code_region(file_name, &source_file, span, body_span)), + ); } } - /// Returns true if the type of `BasicCoverageBlock` (specifically, it's `BasicBlock`s - /// `TerminatorKind`) with the given `Span` (relative to the `body_span`) is known to produce - /// a redundant coverage count. - /// - /// There is at least one case for this, and if it's not handled, the last line in a function - /// will be double-counted. - /// - /// If this method returns `true`, the counter (which other `Expressions` may depend on) is - /// still injected, but without an associated code region. - // FIXME(#78542): Can spans for `TerminatorKind::Goto` be improved to avoid special cases? - fn is_code_region_redundant( - &self, - bcb: BasicCoverageBlock, - span: Span, - body_span: Span, - ) -> bool { - if span.hi() == body_span.hi() { - // All functions execute a `Return`-terminated `BasicBlock`, regardless of how the - // function returns; but only some functions also _can_ return after a `Goto` block - // that ends on the closing brace of the function (with the `Return`). When this - // happens, the last character is counted 2 (or possibly more) times, when we know - // the function returned only once (of course). By giving all `Goto` terminators at - // the end of a function a `non-reportable` code region, they are still counted - // if appropriate, but they don't increment the line counter, as long as their is - // also a `Return` on that last line. - if let TerminatorKind::Goto { .. } = self.bcb_terminator(bcb).kind { - return true; - } - } - false - } - /// `inject_coverage_span_counters()` looped through the `CoverageSpan`s and injected the /// counter from the `CoverageSpan`s `BasicCoverageBlock`, removing it from the BCB in the /// process (via `take_counter()`). @@ -411,11 +390,6 @@ impl<'a, 'tcx> Instrumentor<'a, 'tcx> { self.bcb_data(bcb).last_bb() } - #[inline] - fn bcb_terminator(&self, bcb: BasicCoverageBlock) -> &Terminator<'tcx> { - self.bcb_data(bcb).terminator(self.mir_body) - } - #[inline] fn bcb_data(&self, bcb: BasicCoverageBlock) -> &BasicCoverageBlockData { &self.basic_coverage_blocks[bcb] @@ -521,10 +495,13 @@ fn make_code_region( } } -fn hir_body<'tcx>(tcx: TyCtxt<'tcx>, def_id: DefId) -> &'tcx rustc_hir::Body<'tcx> { +fn fn_sig_and_body<'tcx>( + tcx: TyCtxt<'tcx>, + def_id: DefId, +) -> (Option<&'tcx rustc_hir::FnSig<'tcx>>, &'tcx rustc_hir::Body<'tcx>) { let hir_node = tcx.hir().get_if_local(def_id).expect("expected DefId is local"); let fn_body_id = hir::map::associated_body(hir_node).expect("HIR node is a function with body"); - tcx.hir().body(fn_body_id) + (hir::map::fn_sig(hir_node), tcx.hir().body(fn_body_id)) } fn hash_mir_source<'tcx>(tcx: TyCtxt<'tcx>, hir_body: &'tcx rustc_hir::Body<'tcx>) -> u64 { diff --git a/compiler/rustc_mir/src/transform/coverage/query.rs b/compiler/rustc_mir/src/transform/coverage/query.rs index e86bb96d29c..aa34ae70ef1 100644 --- a/compiler/rustc_mir/src/transform/coverage/query.rs +++ b/compiler/rustc_mir/src/transform/coverage/query.rs @@ -1,6 +1,8 @@ +use super::*; + use rustc_middle::mir::coverage::*; use rustc_middle::mir::visit::Visitor; -use rustc_middle::mir::{Coverage, CoverageInfo, Location}; +use rustc_middle::mir::{self, Coverage, CoverageInfo, Location}; use rustc_middle::ty::query::Providers; use rustc_middle::ty::TyCtxt; use rustc_span::def_id::DefId; @@ -9,6 +11,8 @@ use rustc_span::def_id::DefId; /// counter) and `FunctionCoverage::new()` (to extract the coverage map metadata from the MIR). pub(crate) fn provide(providers: &mut Providers) { providers.coverageinfo = |tcx, def_id| coverageinfo_from_mir(tcx, def_id); + providers.covered_file_name = |tcx, def_id| covered_file_name(tcx, def_id); + providers.covered_code_regions = |tcx, def_id| covered_code_regions(tcx, def_id); } /// The `num_counters` argument to `llvm.instrprof.increment` is the max counter_id + 1, or in @@ -123,3 +127,34 @@ fn coverageinfo_from_mir<'tcx>(tcx: TyCtxt<'tcx>, def_id: DefId) -> CoverageInfo coverage_visitor.info } + +fn covered_file_name<'tcx>(tcx: TyCtxt<'tcx>, def_id: DefId) -> Option { + let mir_body = tcx.optimized_mir(def_id); + for bb_data in mir_body.basic_blocks().iter() { + for statement in bb_data.statements.iter() { + if let StatementKind::Coverage(box ref coverage) = statement.kind { + if let Some(code_region) = coverage.code_region.as_ref() { + return Some(code_region.file_name); + } + } + } + } + None +} + +fn covered_code_regions<'tcx>(tcx: TyCtxt<'tcx>, def_id: DefId) -> Vec<&'tcx CodeRegion> { + let mir_body: &'tcx mir::Body<'tcx> = tcx.optimized_mir(def_id); + mir_body + .basic_blocks() + .iter() + .map(|data| { + data.statements.iter().filter_map(|statement| match statement.kind { + StatementKind::Coverage(box ref coverage) => { + coverage.code_region.as_ref() // may be None + } + _ => None, + }) + }) + .flatten() + .collect() +} diff --git a/compiler/rustc_mir/src/transform/coverage/spans.rs b/compiler/rustc_mir/src/transform/coverage/spans.rs index 95c49922262..38d66a442ad 100644 --- a/compiler/rustc_mir/src/transform/coverage/spans.rs +++ b/compiler/rustc_mir/src/transform/coverage/spans.rs @@ -1,10 +1,9 @@ use super::debug::term_type; -use super::graph::{BasicCoverageBlock, BasicCoverageBlockData, CoverageGraph}; +use super::graph::{BasicCoverageBlock, BasicCoverageBlockData, CoverageGraph, START_BCB}; use crate::util::spanview::source_range_no_file; use rustc_data_structures::graph::WithNumNodes; -use rustc_index::bit_set::BitSet; use rustc_middle::mir::{ self, AggregateKind, BasicBlock, FakeReadCause, Rvalue, Statement, StatementKind, Terminator, TerminatorKind, @@ -74,6 +73,10 @@ pub(super) struct CoverageSpan { } impl CoverageSpan { + pub fn for_fn_sig(fn_sig_span: Span) -> Self { + Self { span: fn_sig_span, bcb: START_BCB, coverage_statements: vec![], is_closure: false } + } + pub fn for_statement( statement: &Statement<'tcx>, span: Span, @@ -82,10 +85,10 @@ impl CoverageSpan { stmt_index: usize, ) -> Self { let is_closure = match statement.kind { - StatementKind::Assign(box ( - _, - Rvalue::Aggregate(box AggregateKind::Closure(_, _), _), - )) => true, + StatementKind::Assign(box (_, Rvalue::Aggregate(box ref kind, _))) => match kind { + AggregateKind::Closure(_, _) | AggregateKind::Generator(_, _, _) => true, + _ => false, + }, _ => false, }; @@ -109,9 +112,6 @@ impl CoverageSpan { pub fn merge_from(&mut self, mut other: CoverageSpan) { debug_assert!(self.is_mergeable(&other)); self.span = self.span.to(other.span); - if other.is_closure { - self.is_closure = true; - } self.coverage_statements.append(&mut other.coverage_statements); } @@ -171,6 +171,9 @@ pub struct CoverageSpans<'a, 'tcx> { /// The MIR, used to look up `BasicBlockData`. mir_body: &'a mir::Body<'tcx>, + /// A `Span` covering the signature of function for the MIR. + fn_sig_span: Span, + /// A `Span` covering the function body of the MIR (typically from left curly brace to right /// curly brace). body_span: Span, @@ -216,11 +219,13 @@ pub struct CoverageSpans<'a, 'tcx> { impl<'a, 'tcx> CoverageSpans<'a, 'tcx> { pub(super) fn generate_coverage_spans( mir_body: &'a mir::Body<'tcx>, + fn_sig_span: Span, body_span: Span, basic_coverage_blocks: &'a CoverageGraph, ) -> Vec { let mut coverage_spans = CoverageSpans { mir_body, + fn_sig_span, body_span, basic_coverage_blocks, sorted_spans_iter: None, @@ -277,6 +282,8 @@ impl<'a, 'tcx> CoverageSpans<'a, 'tcx> { return initial_spans; } + initial_spans.push(CoverageSpan::for_fn_sig(self.fn_sig_span)); + initial_spans.sort_unstable_by(|a, b| { if a.span.lo() == b.span.lo() { if a.span.hi() == b.span.hi() { @@ -331,7 +338,7 @@ impl<'a, 'tcx> CoverageSpans<'a, 'tcx> { prev={:?}", self.prev() ); - self.discard_curr(); + self.take_curr(); } else if self.curr().is_closure { self.carve_out_span_for_closure(); } else if self.prev_original_span == self.curr().span { @@ -345,28 +352,28 @@ impl<'a, 'tcx> CoverageSpans<'a, 'tcx> { debug!(" AT END, adding last prev={:?}", self.prev()); let prev = self.take_prev(); - let CoverageSpans { - mir_body, basic_coverage_blocks, pending_dups, mut refined_spans, .. - } = self; + let CoverageSpans { pending_dups, mut refined_spans, .. } = self; for dup in pending_dups { debug!(" ...adding at least one pending dup={:?}", dup); refined_spans.push(dup); } - refined_spans.push(prev); - // Remove `CoverageSpan`s with empty spans ONLY if the empty `CoverageSpan`s BCB also has at - // least one other non-empty `CoverageSpan`. - let mut has_coverage = BitSet::new_empty(basic_coverage_blocks.num_nodes()); - for covspan in &refined_spans { - if !covspan.span.is_empty() { - has_coverage.insert(covspan.bcb); - } + // Async functions wrap a closure that implements the body to be executed. The enclosing + // function is initially called, posts the closure to the executor, and returns. To avoid + // showing the return from the enclosing function as a "covered" return from the closure, + // the enclosing function's `TerminatorKind::Return`s `CoverageSpan` is excluded. The + // closure's `Return` is the only one that will be counted. This provides adequate + // coverage, and more intuitive counts. (Avoids double-counting the closing brace of the + // function body.) + let body_ends_with_closure = if let Some(last_covspan) = refined_spans.last() { + last_covspan.is_closure && last_covspan.span.hi() == self.body_span.hi() + } else { + false + }; + + if !body_ends_with_closure { + refined_spans.push(prev); } - refined_spans.retain(|covspan| { - !(covspan.span.is_empty() - && is_goto(&basic_coverage_blocks[covspan.bcb].terminator(mir_body).kind) - && has_coverage.contains(covspan.bcb)) - }); // Remove `CoverageSpan`s derived from closures, originally added to ensure the coverage // regions for the current function leave room for the closure's own coverage regions @@ -491,8 +498,8 @@ impl<'a, 'tcx> CoverageSpans<'a, 'tcx> { /// If called, then the next call to `next_coverage_span()` will *not* update `prev` with the /// `curr` coverage span. - fn discard_curr(&mut self) { - self.some_curr = None; + fn take_curr(&mut self) -> CoverageSpan { + self.some_curr.take().unwrap_or_else(|| bug!("invalid attempt to unwrap a None some_curr")) } /// Returns true if the curr span should be skipped because prev has already advanced beyond the @@ -508,11 +515,11 @@ impl<'a, 'tcx> CoverageSpans<'a, 'tcx> { self.prev().span.hi() <= self.curr().span.lo() } - /// If `prev`s span extends left of the closure (`curr`), carve out the closure's - /// span from `prev`'s span. (The closure's coverage counters will be injected when - /// processing the closure's own MIR.) Add the portion of the span to the left of the - /// closure; and if the span extends to the right of the closure, update `prev` to - /// that portion of the span. For any `pending_dups`, repeat the same process. + /// If `prev`s span extends left of the closure (`curr`), carve out the closure's span from + /// `prev`'s span. (The closure's coverage counters will be injected when processing the + /// closure's own MIR.) Add the portion of the span to the left of the closure; and if the span + /// extends to the right of the closure, update `prev` to that portion of the span. For any + /// `pending_dups`, repeat the same process. fn carve_out_span_for_closure(&mut self) { let curr_span = self.curr().span; let left_cutoff = curr_span.lo(); @@ -541,7 +548,8 @@ impl<'a, 'tcx> CoverageSpans<'a, 'tcx> { dup.span = dup.span.with_lo(right_cutoff); } self.pending_dups.append(&mut pending_dups); - self.discard_curr(); // since self.prev() was already updated + let closure_covspan = self.take_curr(); + self.refined_spans.push(closure_covspan); // since self.prev() was already updated } else { pending_dups.clear(); } @@ -705,30 +713,8 @@ pub(super) fn filtered_terminator_span( | TerminatorKind::DropAndReplace { .. } | TerminatorKind::SwitchInt { .. } // For `FalseEdge`, only the `real` branch is taken, so it is similar to a `Goto`. - // FIXME(richkadel): Note that `Goto` was moved to it's own match arm, for the reasons - // described below. Add tests to confirm whether or not similar cases also apply to - // `FalseEdge`. - | TerminatorKind::FalseEdge { .. } => None, - - // FIXME(#78542): Can spans for `TerminatorKind::Goto` be improved to avoid special cases? - // - // `Goto`s are often the targets of `SwitchInt` branches, and certain important - // optimizations to replace some `Counter`s with `Expression`s require a separate - // `BasicCoverageBlock` for each branch, to support the `Counter`, when needed. - // - // Also, some test cases showed that `Goto` terminators, and to some degree their `Span`s, - // provided useful context for coverage, such as to count and show when `if` blocks - // _without_ `else` blocks execute the `false` case (counting when the body of the `if` - // was _not_ taken). In these cases, the `Goto` span is ultimately given a `CoverageSpan` - // of 1 character, at the end of it's original `Span`. - // - // However, in other cases, a visible `CoverageSpan` is not wanted, but the `Goto` - // block must still be counted (for example, to contribute its count to an `Expression` - // that reports the execution count for some other block). In these cases, the code region - // is set to `None`. (See `Instrumentor::is_code_region_redundant()`.) - TerminatorKind::Goto { .. } => { - Some(function_source_span(terminator.source_info.span.shrink_to_hi(), body_span)) - } + | TerminatorKind::FalseEdge { .. } + | TerminatorKind::Goto { .. } => None, // Retain spans from all other terminators TerminatorKind::Resume @@ -749,11 +735,3 @@ fn function_source_span(span: Span, body_span: Span) -> Span { let span = original_sp(span, body_span).with_ctxt(SyntaxContext::root()); if body_span.contains(span) { span } else { body_span } } - -#[inline(always)] -fn is_goto(term_kind: &TerminatorKind<'tcx>) -> bool { - match term_kind { - TerminatorKind::Goto { .. } => true, - _ => false, - } -} diff --git a/compiler/rustc_session/src/options.rs b/compiler/rustc_session/src/options.rs index 66c709b4080..91ebc9a7c82 100644 --- a/compiler/rustc_session/src/options.rs +++ b/compiler/rustc_session/src/options.rs @@ -945,8 +945,7 @@ options! {DebuggingOptions, DebuggingSetter, basic_debugging_options, "instrument the generated code to support LLVM source-based code coverage \ reports (note, the compiler build config must include `profiler = true`, \ and is mutually exclusive with `-C profile-generate`/`-C profile-use`); \ - implies `-C link-dead-code` (unless targeting MSVC, or explicitly disabled) \ - and `-Z symbol-mangling-version=v0`; disables/overrides some Rust \ + implies `-Z symbol-mangling-version=v0`; disables/overrides some Rust \ optimizations (default: no)"), instrument_mcount: bool = (false, parse_bool, [TRACKED], "insert function instrument code for mcount-based tracing (default: no)"), diff --git a/compiler/rustc_session/src/session.rs b/compiler/rustc_session/src/session.rs index 1352ab53cab..4e269f3172c 100644 --- a/compiler/rustc_session/src/session.rs +++ b/compiler/rustc_session/src/session.rs @@ -1111,33 +1111,7 @@ impl Session { pub fn link_dead_code(&self) -> bool { match self.opts.cg.link_dead_code { Some(explicitly_set) => explicitly_set, - None => { - self.opts.debugging_opts.instrument_coverage && !self.target.is_like_msvc - // Issue #76038: (rustc `-Clink-dead-code` causes MSVC linker to produce invalid - // binaries when LLVM InstrProf counters are enabled). As described by this issue, - // the "link dead code" option produces incorrect binaries when compiled and linked - // under MSVC. The resulting Rust programs typically crash with a segmentation - // fault, or produce an empty "*.profraw" file (profiling counter results normally - // generated during program exit). - // - // If not targeting MSVC, `-Z instrument-coverage` implies `-C link-dead-code`, so - // unexecuted code is still counted as zero, rather than be optimized out. Note that - // instrumenting dead code can be explicitly disabled with: - // - // `-Z instrument-coverage -C link-dead-code=no`. - // - // FIXME(richkadel): Investigate if `instrument-coverage` implementation can inject - // [zero counters](https://llvm.org/docs/CoverageMappingFormat.html#counter) in the - // coverage map when "dead code" is removed, rather than forcing `link-dead-code`. - // This may not be possible, however, if (as it seems to appear) the "dead code" - // that would otherwise not be linked is only identified as "dead" by the native - // linker. If that's the case, I believe it is too late for the Rust compiler to - // leverage any information it might be able to get from the linker regarding what - // code is dead, to be able to add those counters. - // - // On the other hand, if any Rust compiler passes are optimizing out dead code blocks - // we should inject "zero" counters for those code regions. - } + None => false, } } diff --git a/src/doc/unstable-book/src/compiler-flags/source-based-code-coverage.md b/src/doc/unstable-book/src/compiler-flags/source-based-code-coverage.md index 0eb425e42aa..95c2450ae57 100644 --- a/src/doc/unstable-book/src/compiler-flags/source-based-code-coverage.md +++ b/src/doc/unstable-book/src/compiler-flags/source-based-code-coverage.md @@ -1,6 +1,6 @@ # `source-based-code-coverage` -The tracking issue for this feature is: [#79121](https://github.com/rust-lang/rust/issues/79121). +The tracking issue for this feature is: [#79121]. ------------------------ @@ -8,7 +8,7 @@ The tracking issue for this feature is: [#79121](https://github.com/rust-lang/ru The Rust compiler includes two code coverage implementations: -* A GCC-compatible, gcov-based coverage implementation, enabled with [`-Zprofile`](profile.md), which operates on DebugInfo. +* A GCC-compatible, gcov-based coverage implementation, enabled with [`-Zprofile`], which operates on DebugInfo. * A source-based code coverage implementation, enabled with `-Zinstrument-coverage`, which uses LLVM's native coverage instrumentation to generate very precise coverage data. This document describes how to enable and use the LLVM instrumentation-based coverage, via the `-Zinstrument-coverage` compiler flag. @@ -18,7 +18,7 @@ This document describes how to enable and use the LLVM instrumentation-based cov When `-Zinstrument-coverage` is enabled, the Rust compiler enhances rust-based libraries and binaries by: * Automatically injecting calls to an LLVM intrinsic ([`llvm.instrprof.increment`]), at functions and branches in compiled code, to increment counters when conditional sections of code are executed. -* Embedding additional information in the data section of each library and binary (using the [LLVM Code Coverage Mapping Format]), to define the code regions (start and end positions in the source code) being counted. +* Embedding additional information in the data section of each library and binary (using the [LLVM Code Coverage Mapping Format] _Version 4_, supported _only_ in LLVM 11 and up), to define the code regions (start and end positions in the source code) being counted. When running a coverage-instrumented program, the counter values are written to a `profraw` file at program termination. LLVM bundles tools that read the counter results, combine those results with the coverage map (embedded in the program binary), and generate coverage reports in multiple formats. @@ -28,7 +28,7 @@ Rust's source-based code coverage requires the Rust "profiler runtime". Without The Rust `nightly` distribution channel should include the profiler runtime, by default. -*IMPORTANT:* If you are building the Rust compiler from the source distribution, the profiler runtime is *not* enabled in the default `config.toml.example`, and may not be enabled in your `config.toml`. Edit the `config.toml` file, and find the `profiler` feature entry. Uncomment it and set it to `true`: +*IMPORTANT:* If you are building the Rust compiler from the source distribution, the profiler runtime is *not* enabled in the default `config.toml.example`. Edit your `config.toml` file and ensure the `profiler` feature is set it to `true`: ```toml # Build the profiler runtime (required when compiling with options that depend @@ -36,13 +36,13 @@ The Rust `nightly` distribution channel should include the profiler runtime, by profiler = true ``` -Then rebuild the Rust compiler (see [rustc-dev-guide-how-to-build-and-run]). +If changed, rebuild the Rust compiler (see [rustc-dev-guide-how-to-build-and-run]). ### Building the demangler LLVM coverage reporting tools generate results that can include function names and other symbol references, and the raw coverage results report symbols using the compiler's "mangled" version of the symbol names, which can be difficult to interpret. To work around this issue, LLVM coverage tools also support a user-specified symbol name demangler. -One option for a Rust demangler is [`rustfilt`](https://crates.io/crates/rustfilt), which can be installed with: +One option for a Rust demangler is [`rustfilt`], which can be installed with: ```shell cargo install rustfilt @@ -68,7 +68,7 @@ $ cargo clean $ RUSTFLAGS="-Zinstrument-coverage" cargo build ``` -If `cargo` is not configured to use your `profiler`-enabled version of `rustc`, set the path explicitly via the `RUSTC` environment variable. Here is another example, using a `stage1` build of `rustc` to compile an `example` binary (from the [`json5format`](https://crates.io/crates/json5format) crate): +If `cargo` is not configured to use your `profiler`-enabled version of `rustc`, set the path explicitly via the `RUSTC` environment variable. Here is another example, using a `stage1` build of `rustc` to compile an `example` binary (from the [`json5format`] crate): ```shell $ RUSTC=$HOME/rust/build/x86_64-unknown-linux-gnu/stage1/bin/rustc \ @@ -108,19 +108,31 @@ If `LLVM_PROFILE_FILE` contains a path to a non-existent directory, the missing * `%Nm` - the instrumented binary’s signature: The runtime creates a pool of N raw profiles, used for on-line profile merging. The runtime takes care of selecting a raw profile from the pool, locking it, and updating it before the program exits. `N` must be between `1` and `9`, and defaults to `1` if omitted (with simply `%m`). * `%c` - Does not add anything to the filename, but enables a mode (on some platforms, including Darwin) in which profile counter updates are continuously synced to a file. This means that if the instrumented program crashes, or is killed by a signal, perfect coverage information can still be recovered. +## Installing LLVM coverage tools + +LLVM's supplies two tools—`llvm-profdata` and `llvm-cov`—that process coverage data and generate reports. There are several ways to find and/or install these tools, but note that the coverage mapping data generated by the Rust compiler requires LLVM version 11 or higher. (`llvm-cov --version` typically shows the tool's LLVM version number.): + +* The LLVM tools may be installed (or installable) directly to your OS (such as via `apt-get`, for Linux). +* If you are building the Rust compiler from source, you can optionally use the bundled LLVM tools, built from source. Those tool binaries can typically be found in your build platform directory at something like: `rust/build/x86_64-unknown-linux-gnu/llvm/bin/llvm-*`. +* You can install compatible versions of these tools via `rustup`. + +The `rustup` option is guaranteed to install a compatible version of the LLVM tools, but they can be hard to find. We recommend [`cargo-bintools`], which installs Rust-specific wrappers around these and other LLVM tools, so you can invoke them via `cargo` commands! + +```shell +$ rustup component add llvm-tools-preview +$ cargo install cargo-binutils +$ cargo profdata -- --help # note the additional "--" preceeding the tool-specific arguments +``` + ## Creating coverage reports -LLVM's tools to process coverage data and coverage maps have some version dependencies. If you encounter a version mismatch, try updating your LLVM tools. - -If you are building the Rust compiler from source, you can optionally use the bundled LLVM tools, built from source. Those tool binaries can typically be found in your build platform directory at something like: `rust/build/x86_64-unknown-linux-gnu/llvm/bin/llvm-*`. (Look for `llvm-profdata` and `llvm-cov`.) - -Raw profiles have to be indexed before they can be used to generate coverage reports. This is done using [`llvm-profdata merge`] (which can combine multiple raw profiles and index them at the same time): +Raw profiles have to be indexed before they can be used to generate coverage reports. This is done using [`llvm-profdata merge`] (or `cargo cov -- merge`), which can combine multiple raw profiles and index them at the same time: ```shell $ llvm-profdata merge -sparse formatjson5.profraw -o formatjson5.profdata ``` -Finally, the `.profdata` file is used, in combination with the coverage map (from the program binary) to generate coverage reports using [`llvm-cov report`]--for a coverage summaries--and [`llvm-cov show`]--to see detailed coverage of lines and regions (character ranges), overlaid on the original source code. +Finally, the `.profdata` file is used, in combination with the coverage map (from the program binary) to generate coverage reports using [`llvm-cov report`] (or `cargo cov -- report`), for a coverage summaries; and [`llvm-cov show`] (or `cargo cov -- show`), to see detailed coverage of lines and regions (character ranges) overlaid on the original source code. These commands have several display and filtering options. For example: @@ -154,14 +166,77 @@ There are four statistics tracked in a coverage summary: Of these four statistics, function coverage is usually the least granular while region coverage is the most granular. The project-wide totals for each statistic are listed in the summary. +## Test coverage + +A typical use case for coverage analysis is test coverage. Rust's source-based coverage tools can both measure your tests' code coverage as percentage, and pinpoint functions and branches not tested. + +The following example (using the [`json5format`] crate, for demonstration purposes) show how to generate and analyze coverage results for all tests in a crate. + +Since `cargo test` both builds and runs the tests, we set both the additional `RUSTFLAGS`, to add the `-Zinstrument-coverage` flag, and `LLVM_PROFILE_FILE`, to set a custom filename for the raw profiling data generated during the test runs. Since there may be more than one test binary, apply `%m` in the filename pattern. This generates unique names for each test binary. (Otherwise, each executed test binary would overwrite the coverage results from the previous binary.) + +```shell +$ RUSTFLAGS="-Zinstrument-coverage" \ + LLVM_PROFILE_FILE="json5format-%m.profraw" \ + cargo test --tests +``` + +Make note of the test binary file paths, displayed after the word "`Running`" in the test output: + +```text + ... + Compiling json5format v0.1.3 ($HOME/json5format) + Finished test [unoptimized + debuginfo] target(s) in 14.60s + + Running target/debug/deps/json5format-fececd4653271682 +running 25 tests +... +test result: ok. 25 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out + + Running target/debug/deps/lib-30768f9c53506dc5 +running 31 tests +... +test result: ok. 31 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out +``` + +You should have one ore more `.profraw` files now, one for each test binary. Run the `profdata` tool to merge them: + +```shell +$ cargo profdata -- merge \ + -sparse json5format-*.profraw -o json5format.profdata +``` + +Then run the `cov` tool, with the `profdata` file and all test binaries: + +```shell +$ cargo cov -- report \ + --use-color --ignore-filename-regex='/.cargo/registry' \ + --instr-profile=json5format.profdata \ + target/debug/deps/lib-30768f9c53506dc5 \ + target/debug/deps/json5format-fececd4653271682 +$ cargo cov -- show \ + --use-color --ignore-filename-regex='/.cargo/registry' \ + --instr-profile=json5format.profdata \ + target/debug/deps/lib-30768f9c53506dc5 \ + target/debug/deps/json5format-fececd4653271682 \ + --show-instantiations --show-line-counts-or-regions \ + --Xdemangler=rustfilt | less -R +``` + +_Note the command line option `--ignore-filename-regex=/.cargo/registry`, which excludes the sources for dependencies from the coverage results._ + ## Other references -Rust's implementation and workflow for source-based code coverage is based on the same library and tools used to implement [source-based code coverage in Clang](https://clang.llvm.org/docs/SourceBasedCodeCoverage.html). (This document is partially based on the Clang guide.) +Rust's implementation and workflow for source-based code coverage is based on the same library and tools used to implement [source-based code coverage in Clang]. (This document is partially based on the Clang guide.) -[#34701]: https://github.com/rust-lang/rust/issues/34701 +[#79121]: https://github.com/rust-lang/rust/issues/79121 +[`-Zprofile`]: profile.md [`llvm.instrprof.increment`]: https://llvm.org/docs/LangRef.html#llvm-instrprof-increment-intrinsic [LLVM Code Coverage Mapping Format]: https://llvm.org/docs/CoverageMappingFormat.html [rustc-dev-guide-how-to-build-and-run]: https://rustc-dev-guide.rust-lang.org/building/how-to-build-and-run.html +[`rustfilt`]: https://crates.io/crates/rustfilt +[`json5format`]: https://crates.io/crates/json5format +[`cargo-bintools`]: https://crates.io/crates/cargo-bintools [`llvm-profdata merge`]: https://llvm.org/docs/CommandGuide/llvm-profdata.html#profdata-merge [`llvm-cov report`]: https://llvm.org/docs/CommandGuide/llvm-cov.html#llvm-cov-report [`llvm-cov show`]: https://llvm.org/docs/CommandGuide/llvm-cov.html#llvm-cov-show +[source-based code coverage in Clang]: https://clang.llvm.org/docs/SourceBasedCodeCoverage.html \ No newline at end of file diff --git a/src/test/mir-opt/const_prop/control_flow_simplification.hello.ConstProp.diff b/src/test/mir-opt/const_prop/control_flow_simplification.hello.ConstProp.diff index 80b7e7ecdda..0d06c4960b3 100644 --- a/src/test/mir-opt/const_prop/control_flow_simplification.hello.ConstProp.diff +++ b/src/test/mir-opt/const_prop/control_flow_simplification.hello.ConstProp.diff @@ -15,7 +15,7 @@ } bb1: { - _0 = const (); // scope 0 at $DIR/control-flow-simplification.rs:12:5: 14:6 + _0 = const (); // scope 0 at $DIR/control-flow-simplification.rs:14:6: 14:6 StorageDead(_1); // scope 0 at $DIR/control-flow-simplification.rs:15:1: 15:2 return; // scope 0 at $DIR/control-flow-simplification.rs:15:2: 15:2 } diff --git a/src/test/mir-opt/const_prop/control_flow_simplification.hello.PreCodegen.before.mir b/src/test/mir-opt/const_prop/control_flow_simplification.hello.PreCodegen.before.mir index 4898f9deb0c..c2f75e5daee 100644 --- a/src/test/mir-opt/const_prop/control_flow_simplification.hello.PreCodegen.before.mir +++ b/src/test/mir-opt/const_prop/control_flow_simplification.hello.PreCodegen.before.mir @@ -4,7 +4,7 @@ fn hello() -> () { let mut _0: (); // return place in scope 0 at $DIR/control-flow-simplification.rs:11:14: 11:14 bb0: { - _0 = const (); // scope 0 at $DIR/control-flow-simplification.rs:12:5: 14:6 + _0 = const (); // scope 0 at $DIR/control-flow-simplification.rs:14:6: 14:6 return; // scope 0 at $DIR/control-flow-simplification.rs:15:2: 15:2 } } diff --git a/src/test/mir-opt/coverage_graphviz.bar.InstrumentCoverage.0.dot b/src/test/mir-opt/coverage_graphviz.bar.InstrumentCoverage.0.dot index efc06bdea57..124f2d8b97a 100644 --- a/src/test/mir-opt/coverage_graphviz.bar.InstrumentCoverage.0.dot +++ b/src/test/mir-opt/coverage_graphviz.bar.InstrumentCoverage.0.dot @@ -2,5 +2,5 @@ digraph Cov_0_4 { graph [fontname="Courier, monospace"]; node [fontname="Courier, monospace"]; edge [fontname="Courier, monospace"]; - bcb0__Cov_0_4 [shape="none", label=<
bcb0
Counter(bcb0) at 19:5-20:2
19:5-19:9: @0[0]: _0 = const true
20:2-20:2: @0.Return: return
bb0: Return
>]; + bcb0__Cov_0_4 [shape="none", label=<
bcb0
Counter(bcb0) at 18:1-20:2
19:5-19:9: @0[0]: _0 = const true
20:2-20:2: @0.Return: return
bb0: Return
>]; } diff --git a/src/test/mir-opt/coverage_graphviz.main.InstrumentCoverage.0.dot b/src/test/mir-opt/coverage_graphviz.main.InstrumentCoverage.0.dot index 5ddd112fe62..d88193da4fb 100644 --- a/src/test/mir-opt/coverage_graphviz.main.InstrumentCoverage.0.dot +++ b/src/test/mir-opt/coverage_graphviz.main.InstrumentCoverage.0.dot @@ -2,9 +2,9 @@ digraph Cov_0_3 { graph [fontname="Courier, monospace"]; node [fontname="Courier, monospace"]; edge [fontname="Courier, monospace"]; - bcb2__Cov_0_3 [shape="none", label=<
bcb2
Expression(bcb0 - bcb1) at 14:6-14:6
14:6-14:6: @4.Goto: goto -> bb0
bb4: Goto
>]; + bcb2__Cov_0_3 [shape="none", label=<
bcb2
Expression(bcb0 - bcb1) at 13:10-13:10
13:10-13:10: @4[0]: _1 = const ()
bb4: Goto
>]; bcb1__Cov_0_3 [shape="none", label=<
bcb1
Counter(bcb1) at 12:13-12:18
12:13-12:18: @5[0]: _0 = const ()
Expression(bcb1 + 0) at 15:2-15:2
15:2-15:2: @5.Return: return
bb3: FalseEdge
bb5: Return
>]; - bcb0__Cov_0_3 [shape="none", label=<
bcb0
Counter(bcb0) at 11:12-11:17
11:12-11:17: @1.Call: _2 = bar() -> [return: bb2, unwind: bb6]
11:12-11:17: @2[0]: FakeRead(ForMatchedPlace, _2)
bb0: FalseUnwind
bb1: Call
bb2: SwitchInt
>]; + bcb0__Cov_0_3 [shape="none", label=<
bcb0
Counter(bcb0) at 9:1-11:17
11:12-11:17: @1.Call: _2 = bar() -> [return: bb2, unwind: bb6]
11:12-11:17: @2[0]: FakeRead(ForMatchedPlace, _2)
bb0: FalseUnwind
bb1: Call
bb2: SwitchInt
>]; bcb2__Cov_0_3 -> bcb0__Cov_0_3 [label=<>]; bcb0__Cov_0_3 -> bcb2__Cov_0_3 [label=]; bcb0__Cov_0_3 -> bcb1__Cov_0_3 [label=]; diff --git a/src/test/mir-opt/inst_combine_deref.do_not_miscompile.InstCombine.diff b/src/test/mir-opt/inst_combine_deref.do_not_miscompile.InstCombine.diff index dac9ec3b443..a8b523d06df 100644 --- a/src/test/mir-opt/inst_combine_deref.do_not_miscompile.InstCombine.diff +++ b/src/test/mir-opt/inst_combine_deref.do_not_miscompile.InstCombine.diff @@ -57,7 +57,7 @@ } bb1: { - _7 = const (); // scope 4 at $DIR/inst_combine_deref.rs:60:5: 60:23 + _7 = const (); // scope 4 at $DIR/inst_combine_deref.rs:60:23: 60:23 StorageDead(_8); // scope 4 at $DIR/inst_combine_deref.rs:60:22: 60:23 StorageDead(_7); // scope 4 at $DIR/inst_combine_deref.rs:60:22: 60:23 _0 = const (); // scope 0 at $DIR/inst_combine_deref.rs:54:24: 61:2 diff --git a/src/test/mir-opt/instrument_coverage.bar.InstrumentCoverage.diff b/src/test/mir-opt/instrument_coverage.bar.InstrumentCoverage.diff index 5048359e5c6..112a6983092 100644 --- a/src/test/mir-opt/instrument_coverage.bar.InstrumentCoverage.diff +++ b/src/test/mir-opt/instrument_coverage.bar.InstrumentCoverage.diff @@ -6,7 +6,7 @@ bb0: { _0 = const true; // scope 0 at /the/src/instrument_coverage.rs:20:5: 20:9 -+ Coverage::Counter(1) for /the/src/instrument_coverage.rs:20:5 - 21:2; // scope 0 at /the/src/instrument_coverage.rs:21:2: 21:2 ++ Coverage::Counter(1) for /the/src/instrument_coverage.rs:19:1 - 21:2; // scope 0 at /the/src/instrument_coverage.rs:21:2: 21:2 return; // scope 0 at /the/src/instrument_coverage.rs:21:2: 21:2 } } diff --git a/src/test/mir-opt/instrument_coverage.main.InstrumentCoverage.diff b/src/test/mir-opt/instrument_coverage.main.InstrumentCoverage.diff index c67d0e2ffe6..83dee7efa6d 100644 --- a/src/test/mir-opt/instrument_coverage.main.InstrumentCoverage.diff +++ b/src/test/mir-opt/instrument_coverage.main.InstrumentCoverage.diff @@ -21,7 +21,7 @@ bb2: { FakeRead(ForMatchedPlace, _2); // scope 0 at /the/src/instrument_coverage.rs:12:12: 12:17 -+ Coverage::Counter(1) for /the/src/instrument_coverage.rs:12:12 - 12:17; // scope 0 at /the/src/instrument_coverage.rs:12:9: 14:10 ++ Coverage::Counter(1) for /the/src/instrument_coverage.rs:10:1 - 12:17; // scope 0 at /the/src/instrument_coverage.rs:12:9: 14:10 switchInt(_2) -> [false: bb4, otherwise: bb3]; // scope 0 at /the/src/instrument_coverage.rs:12:9: 14:10 } @@ -30,9 +30,9 @@ } bb4: { - _1 = const (); // scope 0 at /the/src/instrument_coverage.rs:12:9: 14:10 + _1 = const (); // scope 0 at /the/src/instrument_coverage.rs:14:10: 14:10 StorageDead(_2); // scope 0 at /the/src/instrument_coverage.rs:15:5: 15:6 -+ Coverage::Expression(4294967295) = 1 - 2 for /the/src/instrument_coverage.rs:15:6 - 15:7; // scope 0 at /the/src/instrument_coverage.rs:11:5: 15:6 ++ Coverage::Expression(4294967295) = 1 - 2 for /the/src/instrument_coverage.rs:14:10 - 14:11; // scope 0 at /the/src/instrument_coverage.rs:11:5: 15:6 goto -> bb0; // scope 0 at /the/src/instrument_coverage.rs:11:5: 15:6 } diff --git a/src/test/mir-opt/issue_38669.main.SimplifyCfg-initial.after.mir b/src/test/mir-opt/issue_38669.main.SimplifyCfg-initial.after.mir index 0929ba9d8a2..30036e4034a 100644 --- a/src/test/mir-opt/issue_38669.main.SimplifyCfg-initial.after.mir +++ b/src/test/mir-opt/issue_38669.main.SimplifyCfg-initial.after.mir @@ -35,7 +35,7 @@ fn main() -> () { } bb4: { - _3 = const (); // scope 1 at $DIR/issue-38669.rs:7:9: 9:10 + _3 = const (); // scope 1 at $DIR/issue-38669.rs:9:10: 9:10 StorageDead(_4); // scope 1 at $DIR/issue-38669.rs:9:9: 9:10 StorageDead(_3); // scope 1 at $DIR/issue-38669.rs:9:9: 9:10 _1 = const true; // scope 1 at $DIR/issue-38669.rs:10:9: 10:28 diff --git a/src/test/mir-opt/issue_41888.main.ElaborateDrops.after.mir b/src/test/mir-opt/issue_41888.main.ElaborateDrops.after.mir index d7b4e073cea..453886f3eff 100644 --- a/src/test/mir-opt/issue_41888.main.ElaborateDrops.after.mir +++ b/src/test/mir-opt/issue_41888.main.ElaborateDrops.after.mir @@ -37,7 +37,7 @@ fn main() -> () { } bb2: { - _0 = const (); // scope 1 at $DIR/issue-41888.rs:8:5: 14:6 + _0 = const (); // scope 1 at $DIR/issue-41888.rs:14:6: 14:6 goto -> bb8; // scope 1 at $DIR/issue-41888.rs:8:5: 14:6 } @@ -61,7 +61,7 @@ fn main() -> () { } bb6: { - _0 = const (); // scope 1 at $DIR/issue-41888.rs:10:9: 13:10 + _0 = const (); // scope 1 at $DIR/issue-41888.rs:13:10: 13:10 goto -> bb8; // scope 1 at $DIR/issue-41888.rs:10:9: 13:10 } diff --git a/src/test/mir-opt/loop_test.main.SimplifyCfg-promote-consts.after.mir b/src/test/mir-opt/loop_test.main.SimplifyCfg-promote-consts.after.mir index 05def56e65e..56df50c0893 100644 --- a/src/test/mir-opt/loop_test.main.SimplifyCfg-promote-consts.after.mir +++ b/src/test/mir-opt/loop_test.main.SimplifyCfg-promote-consts.after.mir @@ -25,7 +25,7 @@ fn main() -> () { } bb2: { - _1 = const (); // scope 0 at $DIR/loop_test.rs:10:5: 12:6 + _1 = const (); // scope 0 at $DIR/loop_test.rs:12:6: 12:6 StorageDead(_2); // scope 0 at $DIR/loop_test.rs:12:5: 12:6 StorageDead(_1); // scope 0 at $DIR/loop_test.rs:12:5: 12:6 StorageLive(_4); // scope 0 at $DIR/loop_test.rs:13:5: 16:6 diff --git a/src/test/mir-opt/matches_reduce_branches.foo.MatchBranchSimplification.32bit.diff b/src/test/mir-opt/matches_reduce_branches.foo.MatchBranchSimplification.32bit.diff index ba963e3fe92..d0b1a96b9ae 100644 --- a/src/test/mir-opt/matches_reduce_branches.foo.MatchBranchSimplification.32bit.diff +++ b/src/test/mir-opt/matches_reduce_branches.foo.MatchBranchSimplification.32bit.diff @@ -34,7 +34,7 @@ } bb4: { - _0 = const (); // scope 0 at $DIR/matches_reduce_branches.rs:7:5: 9:6 + _0 = const (); // scope 0 at $DIR/matches_reduce_branches.rs:9:6: 9:6 goto -> bb5; // scope 0 at $DIR/matches_reduce_branches.rs:7:5: 9:6 } diff --git a/src/test/mir-opt/matches_reduce_branches.foo.MatchBranchSimplification.64bit.diff b/src/test/mir-opt/matches_reduce_branches.foo.MatchBranchSimplification.64bit.diff index ba963e3fe92..d0b1a96b9ae 100644 --- a/src/test/mir-opt/matches_reduce_branches.foo.MatchBranchSimplification.64bit.diff +++ b/src/test/mir-opt/matches_reduce_branches.foo.MatchBranchSimplification.64bit.diff @@ -34,7 +34,7 @@ } bb4: { - _0 = const (); // scope 0 at $DIR/matches_reduce_branches.rs:7:5: 9:6 + _0 = const (); // scope 0 at $DIR/matches_reduce_branches.rs:9:6: 9:6 goto -> bb5; // scope 0 at $DIR/matches_reduce_branches.rs:7:5: 9:6 } diff --git a/src/test/mir-opt/simplify_cfg.main.SimplifyCfg-early-opt.diff b/src/test/mir-opt/simplify_cfg.main.SimplifyCfg-early-opt.diff index 62743057048..5588877aec9 100644 --- a/src/test/mir-opt/simplify_cfg.main.SimplifyCfg-early-opt.diff +++ b/src/test/mir-opt/simplify_cfg.main.SimplifyCfg-early-opt.diff @@ -33,7 +33,7 @@ - - bb4: { + bb2: { - _1 = const (); // scope 0 at $DIR/simplify_cfg.rs:7:9: 9:10 + _1 = const (); // scope 0 at $DIR/simplify_cfg.rs:9:10: 9:10 StorageDead(_2); // scope 0 at $DIR/simplify_cfg.rs:10:5: 10:6 goto -> bb0; // scope 0 at $DIR/simplify_cfg.rs:6:5: 10:6 } diff --git a/src/test/mir-opt/simplify_cfg.main.SimplifyCfg-initial.diff b/src/test/mir-opt/simplify_cfg.main.SimplifyCfg-initial.diff index 9a6afc58c4e..e62935225d8 100644 --- a/src/test/mir-opt/simplify_cfg.main.SimplifyCfg-initial.diff +++ b/src/test/mir-opt/simplify_cfg.main.SimplifyCfg-initial.diff @@ -40,7 +40,7 @@ - bb5: { + bb4: { - _1 = const (); // scope 0 at $DIR/simplify_cfg.rs:7:9: 9:10 + _1 = const (); // scope 0 at $DIR/simplify_cfg.rs:9:10: 9:10 - goto -> bb9; // scope 0 at $DIR/simplify_cfg.rs:7:9: 9:10 + StorageDead(_2); // scope 0 at $DIR/simplify_cfg.rs:10:5: 10:6 + goto -> bb0; // scope 0 at $DIR/simplify_cfg.rs:6:5: 10:6 diff --git a/src/test/mir-opt/simplify_if.main.SimplifyBranches-after-const-prop.diff b/src/test/mir-opt/simplify_if.main.SimplifyBranches-after-const-prop.diff index aeb319a4904..bf3caf505ed 100644 --- a/src/test/mir-opt/simplify_if.main.SimplifyBranches-after-const-prop.diff +++ b/src/test/mir-opt/simplify_if.main.SimplifyBranches-after-const-prop.diff @@ -14,7 +14,7 @@ } bb1: { - _0 = const (); // scope 0 at $DIR/simplify_if.rs:6:5: 8:6 + _0 = const (); // scope 0 at $DIR/simplify_if.rs:8:6: 8:6 goto -> bb4; // scope 0 at $DIR/simplify_if.rs:6:5: 8:6 } diff --git a/src/test/mir-opt/simplify_locals_fixedpoint.foo.SimplifyLocals.diff b/src/test/mir-opt/simplify_locals_fixedpoint.foo.SimplifyLocals.diff index 45808962bb5..9f7507a5cad 100644 --- a/src/test/mir-opt/simplify_locals_fixedpoint.foo.SimplifyLocals.diff +++ b/src/test/mir-opt/simplify_locals_fixedpoint.foo.SimplifyLocals.diff @@ -30,7 +30,7 @@ } bb1: { - _0 = const (); // scope 0 at $DIR/simplify-locals-fixedpoint.rs:4:5: 8:6 + _0 = const (); // scope 0 at $DIR/simplify-locals-fixedpoint.rs:8:6: 8:6 goto -> bb7; // scope 0 at $DIR/simplify-locals-fixedpoint.rs:4:5: 8:6 } @@ -51,7 +51,7 @@ } bb4: { - _0 = const (); // scope 1 at $DIR/simplify-locals-fixedpoint.rs:5:9: 7:10 + _0 = const (); // scope 1 at $DIR/simplify-locals-fixedpoint.rs:7:10: 7:10 goto -> bb6; // scope 1 at $DIR/simplify-locals-fixedpoint.rs:5:9: 7:10 } diff --git a/src/test/mir-opt/unreachable.main.UnreachablePropagation.diff b/src/test/mir-opt/unreachable.main.UnreachablePropagation.diff index 37ff5c6ee3b..6f44de1e4a4 100644 --- a/src/test/mir-opt/unreachable.main.UnreachablePropagation.diff +++ b/src/test/mir-opt/unreachable.main.UnreachablePropagation.diff @@ -32,7 +32,7 @@ } bb2: { - _0 = const (); // scope 0 at $DIR/unreachable.rs:9:5: 19:6 + _0 = const (); // scope 0 at $DIR/unreachable.rs:19:6: 19:6 StorageDead(_1); // scope 0 at $DIR/unreachable.rs:20:1: 20:2 return; // scope 0 at $DIR/unreachable.rs:20:2: 20:2 - } diff --git a/src/test/mir-opt/unreachable_asm.main.UnreachablePropagation.diff b/src/test/mir-opt/unreachable_asm.main.UnreachablePropagation.diff index 5caacf84ca6..9bca06a3e2b 100644 --- a/src/test/mir-opt/unreachable_asm.main.UnreachablePropagation.diff +++ b/src/test/mir-opt/unreachable_asm.main.UnreachablePropagation.diff @@ -34,7 +34,7 @@ } bb2: { - _0 = const (); // scope 0 at $DIR/unreachable_asm.rs:11:5: 23:6 + _0 = const (); // scope 0 at $DIR/unreachable_asm.rs:23:6: 23:6 StorageDead(_1); // scope 0 at $DIR/unreachable_asm.rs:24:1: 24:2 return; // scope 0 at $DIR/unreachable_asm.rs:24:2: 24:2 } diff --git a/src/test/mir-opt/unreachable_asm_2.main.UnreachablePropagation.diff b/src/test/mir-opt/unreachable_asm_2.main.UnreachablePropagation.diff index 07ed81b35f5..cbc24eab0f5 100644 --- a/src/test/mir-opt/unreachable_asm_2.main.UnreachablePropagation.diff +++ b/src/test/mir-opt/unreachable_asm_2.main.UnreachablePropagation.diff @@ -37,7 +37,7 @@ } bb2: { - _0 = const (); // scope 0 at $DIR/unreachable_asm_2.rs:11:5: 25:6 + _0 = const (); // scope 0 at $DIR/unreachable_asm_2.rs:25:6: 25:6 StorageDead(_1); // scope 0 at $DIR/unreachable_asm_2.rs:26:1: 26:2 return; // scope 0 at $DIR/unreachable_asm_2.rs:26:2: 26:2 } diff --git a/src/test/mir-opt/unreachable_diverging.main.UnreachablePropagation.diff b/src/test/mir-opt/unreachable_diverging.main.UnreachablePropagation.diff index c809483d8c2..fd8286f1c4f 100644 --- a/src/test/mir-opt/unreachable_diverging.main.UnreachablePropagation.diff +++ b/src/test/mir-opt/unreachable_diverging.main.UnreachablePropagation.diff @@ -33,7 +33,7 @@ } bb2: { - _0 = const (); // scope 1 at $DIR/unreachable_diverging.rs:14:5: 19:6 + _0 = const (); // scope 1 at $DIR/unreachable_diverging.rs:19:6: 19:6 StorageDead(_1); // scope 0 at $DIR/unreachable_diverging.rs:20:1: 20:2 StorageDead(_2); // scope 0 at $DIR/unreachable_diverging.rs:20:1: 20:2 return; // scope 0 at $DIR/unreachable_diverging.rs:20:2: 20:2 @@ -50,7 +50,7 @@ } bb4: { -- _5 = const (); // scope 2 at $DIR/unreachable_diverging.rs:15:9: 17:10 +- _5 = const (); // scope 2 at $DIR/unreachable_diverging.rs:17:10: 17:10 - goto -> bb6; // scope 2 at $DIR/unreachable_diverging.rs:15:9: 17:10 - } - diff --git a/src/test/run-make-fulldeps/coverage-llvmir-deadcode/Makefile b/src/test/run-make-fulldeps/coverage-llvmir-deadcode/Makefile deleted file mode 100644 index 1b3cd82bb0d..00000000000 --- a/src/test/run-make-fulldeps/coverage-llvmir-deadcode/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -# needs-profiler-support -# ignore-msvc - -# LINK_DEAD_CODE requires ignore-msvc due to Issue #76038 -LINK_DEAD_CODE=yes - --include ../coverage-llvmir/Makefile - -# ISSUE(76038): When targeting MSVC, Rust binaries built with both `-Z instrument-coverage` and -# `-C link-dead-code` typically crash (with a seg-fault) or at best generate an empty `*.profraw`. -# See ../coverage/coverage_tools.mk for more information. diff --git a/src/test/run-make-fulldeps/coverage-llvmir/Makefile b/src/test/run-make-fulldeps/coverage-llvmir/Makefile index bd6cd0ee495..54fc3d16864 100644 --- a/src/test/run-make-fulldeps/coverage-llvmir/Makefile +++ b/src/test/run-make-fulldeps/coverage-llvmir/Makefile @@ -1,9 +1,5 @@ # needs-profiler-support -# ISSUE(76038): When targeting MSVC, Rust binaries built with both `-Z instrument-coverage` and -# `-C link-dead-code` typically crash (with a seg-fault) or at best generate an empty `*.profraw`. -# See ../coverage/coverage_tools.mk for more information. - -include ../coverage/coverage_tools.mk BASEDIR=../coverage-llvmir @@ -20,11 +16,7 @@ else COMDAT_IF_SUPPORTED=, comdat endif -ifeq ($(LINK_DEAD_CODE),yes) - DEFINE_INTERNAL=define hidden -else - DEFINE_INTERNAL=define internal -endif +DEFINE_INTERNAL=define internal ifdef IS_WINDOWS LLVM_FILECHECK_OPTIONS=\ @@ -65,14 +57,8 @@ endif test_llvm_ir: # Compile the test program with non-experimental coverage instrumentation, and generate LLVM IR - # - # Note: `-Clink-dead-code=no` disables the option, needed because the option is automatically - # enabled for some platforms, but not for Windows MSVC (due to Issue #76038). The state of this - # option affects the generated MIR and coverage, so it is enabled for tests to ensure the - # tests results are the same across platforms. $(RUSTC) $(BASEDIR)/testprog.rs \ -Zinstrument-coverage \ - -Clink-dead-code=$(LINK_DEAD_CODE) \ --emit=llvm-ir cat "$(TMPDIR)"/testprog.ll | \ diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/Makefile b/src/test/run-make-fulldeps/coverage-reports-deadcode/Makefile deleted file mode 100644 index 0d40ffee764..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -# needs-profiler-support -# ignore-msvc -# ignore-windows-gnu - -# FIXME(mati865): MinGW GCC miscompiles compiler-rt profiling library but with Clang it works -# properly. Since we only have GCC on the CI ignore the test for now. - -# LINK_DEAD_CODE requires ignore-msvc due to Issue #76038 -LINK_DEAD_CODE=yes - --include ../coverage-reports/Makefile - -# ISSUE(76038): When targeting MSVC, Rust binaries built with both `-Z instrument-coverage` and -# `-C link-dead-code` typically crash (with a seg-fault) or at best generate an empty `*.profraw`. -# See ../coverage/coverage_tools.mk for more information. diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.abort.json b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.abort.json deleted file mode 100644 index 33cfc9f3ed7..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.abort.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "data": [ - { - "files": [ - { - "filename": "../coverage/abort.rs", - "summary": { - "functions": { - "count": 2, - "covered": 2, - "percent": 100 - }, - "instantiations": { - "count": 2, - "covered": 2, - "percent": 100 - }, - "lines": { - "count": 15, - "covered": 13, - "percent": 86.66666666666667 - }, - "regions": { - "count": 10, - "covered": 9, - "notcovered": 1, - "percent": 90 - } - } - } - ], - "totals": { - "functions": { - "count": 2, - "covered": 2, - "percent": 100 - }, - "instantiations": { - "count": 2, - "covered": 2, - "percent": 100 - }, - "lines": { - "count": 15, - "covered": 13, - "percent": 86.66666666666667 - }, - "regions": { - "count": 10, - "covered": 9, - "notcovered": 1, - "percent": 90 - } - } - } - ], - "type": "llvm.coverage.json.export", - "version": "2.0.1" -} diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.assert.json b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.assert.json deleted file mode 100644 index aa2a0cbebe7..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.assert.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "data": [ - { - "files": [ - { - "filename": "../coverage/assert.rs", - "summary": { - "functions": { - "count": 2, - "covered": 2, - "percent": 100 - }, - "instantiations": { - "count": 2, - "covered": 2, - "percent": 100 - }, - "lines": { - "count": 13, - "covered": 10, - "percent": 76.92307692307693 - }, - "regions": { - "count": 14, - "covered": 12, - "notcovered": 2, - "percent": 85.71428571428571 - } - } - } - ], - "totals": { - "functions": { - "count": 2, - "covered": 2, - "percent": 100 - }, - "instantiations": { - "count": 2, - "covered": 2, - "percent": 100 - }, - "lines": { - "count": 13, - "covered": 10, - "percent": 76.92307692307693 - }, - "regions": { - "count": 14, - "covered": 12, - "notcovered": 2, - "percent": 85.71428571428571 - } - } - } - ], - "type": "llvm.coverage.json.export", - "version": "2.0.1" -} diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.async.json b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.async.json deleted file mode 100644 index 004bedeea62..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.async.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "data": [ - { - "files": [ - { - "filename": "../coverage/async.rs", - "summary": { - "functions": { - "count": 9, - "covered": 9, - "percent": 100 - }, - "instantiations": { - "count": 9, - "covered": 9, - "percent": 100 - }, - "lines": { - "count": 31, - "covered": 30, - "percent": 96.7741935483871 - }, - "regions": { - "count": 21, - "covered": 18, - "notcovered": 3, - "percent": 85.71428571428571 - } - } - } - ], - "totals": { - "functions": { - "count": 9, - "covered": 9, - "percent": 100 - }, - "instantiations": { - "count": 9, - "covered": 9, - "percent": 100 - }, - "lines": { - "count": 31, - "covered": 30, - "percent": 96.7741935483871 - }, - "regions": { - "count": 21, - "covered": 18, - "notcovered": 3, - "percent": 85.71428571428571 - } - } - } - ], - "type": "llvm.coverage.json.export", - "version": "2.0.1" -} diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.closure.json b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.closure.json deleted file mode 100644 index bff55300b3c..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.closure.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "data": [ - { - "files": [ - { - "filename": "../coverage/closure.rs", - "summary": { - "functions": { - "count": 5, - "covered": 3, - "percent": 60 - }, - "instantiations": { - "count": 5, - "covered": 3, - "percent": 60 - }, - "lines": { - "count": 91, - "covered": 77, - "percent": 84.61538461538461 - }, - "regions": { - "count": 25, - "covered": 13, - "notcovered": 12, - "percent": 52 - } - } - } - ], - "totals": { - "functions": { - "count": 5, - "covered": 3, - "percent": 60 - }, - "instantiations": { - "count": 5, - "covered": 3, - "percent": 60 - }, - "lines": { - "count": 91, - "covered": 77, - "percent": 84.61538461538461 - }, - "regions": { - "count": 25, - "covered": 13, - "notcovered": 12, - "percent": 52 - } - } - } - ], - "type": "llvm.coverage.json.export", - "version": "2.0.1" -} diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.conditions.json b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.conditions.json deleted file mode 100644 index d69ca80839a..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.conditions.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "data": [ - { - "files": [ - { - "filename": "../coverage/conditions.rs", - "summary": { - "functions": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "instantiations": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "lines": { - "count": 64, - "covered": 33, - "percent": 51.5625 - }, - "regions": { - "count": 88, - "covered": 25, - "notcovered": 63, - "percent": 28.40909090909091 - } - } - } - ], - "totals": { - "functions": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "instantiations": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "lines": { - "count": 64, - "covered": 33, - "percent": 51.5625 - }, - "regions": { - "count": 88, - "covered": 25, - "notcovered": 63, - "percent": 28.40909090909091 - } - } - } - ], - "type": "llvm.coverage.json.export", - "version": "2.0.1" -} diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.drop_trait.json b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.drop_trait.json deleted file mode 100644 index bd2e2d56d4a..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.drop_trait.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "data": [ - { - "files": [ - { - "filename": "../coverage/drop_trait.rs", - "summary": { - "functions": { - "count": 2, - "covered": 2, - "percent": 100 - }, - "instantiations": { - "count": 2, - "covered": 2, - "percent": 100 - }, - "lines": { - "count": 10, - "covered": 10, - "percent": 100 - }, - "regions": { - "count": 5, - "covered": 5, - "notcovered": 0, - "percent": 100 - } - } - } - ], - "totals": { - "functions": { - "count": 2, - "covered": 2, - "percent": 100 - }, - "instantiations": { - "count": 2, - "covered": 2, - "percent": 100 - }, - "lines": { - "count": 10, - "covered": 10, - "percent": 100 - }, - "regions": { - "count": 5, - "covered": 5, - "notcovered": 0, - "percent": 100 - } - } - } - ], - "type": "llvm.coverage.json.export", - "version": "2.0.1" -} diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.generics.json b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.generics.json deleted file mode 100644 index a50f4657e20..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.generics.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "data": [ - { - "files": [ - { - "filename": "../coverage/generics.rs", - "summary": { - "functions": { - "count": 3, - "covered": 3, - "percent": 100 - }, - "instantiations": { - "count": 5, - "covered": 5, - "percent": 100 - }, - "lines": { - "count": 16, - "covered": 16, - "percent": 100 - }, - "regions": { - "count": 6, - "covered": 6, - "notcovered": 0, - "percent": 100 - } - } - } - ], - "totals": { - "functions": { - "count": 3, - "covered": 3, - "percent": 100 - }, - "instantiations": { - "count": 5, - "covered": 5, - "percent": 100 - }, - "lines": { - "count": 16, - "covered": 16, - "percent": 100 - }, - "regions": { - "count": 6, - "covered": 6, - "notcovered": 0, - "percent": 100 - } - } - } - ], - "type": "llvm.coverage.json.export", - "version": "2.0.1" -} diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.if.json b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.if.json deleted file mode 100644 index 84dcc251f3f..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.if.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "data": [ - { - "files": [ - { - "filename": "../coverage/if.rs", - "summary": { - "functions": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "instantiations": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "lines": { - "count": 19, - "covered": 19, - "percent": 100 - }, - "regions": { - "count": 5, - "covered": 4, - "notcovered": 1, - "percent": 80 - } - } - } - ], - "totals": { - "functions": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "instantiations": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "lines": { - "count": 19, - "covered": 19, - "percent": 100 - }, - "regions": { - "count": 5, - "covered": 4, - "notcovered": 1, - "percent": 80 - } - } - } - ], - "type": "llvm.coverage.json.export", - "version": "2.0.1" -} diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.if_else.json b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.if_else.json deleted file mode 100644 index 36f81ceae19..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.if_else.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "data": [ - { - "files": [ - { - "filename": "../coverage/if_else.rs", - "summary": { - "functions": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "instantiations": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "lines": { - "count": 28, - "covered": 19, - "percent": 67.85714285714286 - }, - "regions": { - "count": 7, - "covered": 5, - "notcovered": 2, - "percent": 71.42857142857143 - } - } - } - ], - "totals": { - "functions": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "instantiations": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "lines": { - "count": 28, - "covered": 19, - "percent": 67.85714285714286 - }, - "regions": { - "count": 7, - "covered": 5, - "notcovered": 2, - "percent": 71.42857142857143 - } - } - } - ], - "type": "llvm.coverage.json.export", - "version": "2.0.1" -} diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.inner_items.json b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.inner_items.json deleted file mode 100644 index 5dc82d2168c..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.inner_items.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "data": [ - { - "files": [ - { - "filename": "../coverage/inner_items.rs", - "summary": { - "functions": { - "count": 4, - "covered": 4, - "percent": 100 - }, - "instantiations": { - "count": 4, - "covered": 4, - "percent": 100 - }, - "lines": { - "count": 27, - "covered": 27, - "percent": 100 - }, - "regions": { - "count": 11, - "covered": 9, - "notcovered": 2, - "percent": 81.81818181818183 - } - } - } - ], - "totals": { - "functions": { - "count": 4, - "covered": 4, - "percent": 100 - }, - "instantiations": { - "count": 4, - "covered": 4, - "percent": 100 - }, - "lines": { - "count": 27, - "covered": 27, - "percent": 100 - }, - "regions": { - "count": 11, - "covered": 9, - "notcovered": 2, - "percent": 81.81818181818183 - } - } - } - ], - "type": "llvm.coverage.json.export", - "version": "2.0.1" -} diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.lazy_boolean.json b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.lazy_boolean.json deleted file mode 100644 index 5a953b90b42..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.lazy_boolean.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "data": [ - { - "files": [ - { - "filename": "../coverage/lazy_boolean.rs", - "summary": { - "functions": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "instantiations": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "lines": { - "count": 40, - "covered": 30, - "percent": 75 - }, - "regions": { - "count": 37, - "covered": 26, - "notcovered": 11, - "percent": 70.27027027027027 - } - } - } - ], - "totals": { - "functions": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "instantiations": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "lines": { - "count": 40, - "covered": 30, - "percent": 75 - }, - "regions": { - "count": 37, - "covered": 26, - "notcovered": 11, - "percent": 70.27027027027027 - } - } - } - ], - "type": "llvm.coverage.json.export", - "version": "2.0.1" -} diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.loops_branches.json b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.loops_branches.json deleted file mode 100644 index 2dca41df9d2..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.loops_branches.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "data": [ - { - "files": [ - { - "filename": "../coverage/loops_branches.rs", - "summary": { - "functions": { - "count": 2, - "covered": 2, - "percent": 100 - }, - "instantiations": { - "count": 2, - "covered": 2, - "percent": 100 - }, - "lines": { - "count": 11, - "covered": 11, - "percent": 100 - }, - "regions": { - "count": 9, - "covered": 8, - "notcovered": 1, - "percent": 88.88888888888889 - } - } - } - ], - "totals": { - "functions": { - "count": 2, - "covered": 2, - "percent": 100 - }, - "instantiations": { - "count": 2, - "covered": 2, - "percent": 100 - }, - "lines": { - "count": 11, - "covered": 11, - "percent": 100 - }, - "regions": { - "count": 9, - "covered": 8, - "notcovered": 1, - "percent": 88.88888888888889 - } - } - } - ], - "type": "llvm.coverage.json.export", - "version": "2.0.1" -} diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.nested_loops.json b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.nested_loops.json deleted file mode 100644 index ce3c957e660..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.nested_loops.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "data": [ - { - "files": [ - { - "filename": "../coverage/nested_loops.rs", - "summary": { - "functions": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "instantiations": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "lines": { - "count": 22, - "covered": 16, - "percent": 72.72727272727273 - }, - "regions": { - "count": 17, - "covered": 13, - "notcovered": 4, - "percent": 76.47058823529412 - } - } - } - ], - "totals": { - "functions": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "instantiations": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "lines": { - "count": 22, - "covered": 16, - "percent": 72.72727272727273 - }, - "regions": { - "count": 17, - "covered": 13, - "notcovered": 4, - "percent": 76.47058823529412 - } - } - } - ], - "type": "llvm.coverage.json.export", - "version": "2.0.1" -} diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.overflow.json b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.overflow.json deleted file mode 100644 index 176bfd7abeb..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.overflow.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "data": [ - { - "files": [ - { - "filename": "../coverage/overflow.rs", - "summary": { - "functions": { - "count": 2, - "covered": 2, - "percent": 100 - }, - "instantiations": { - "count": 2, - "covered": 2, - "percent": 100 - }, - "lines": { - "count": 21, - "covered": 17, - "percent": 80.95238095238095 - }, - "regions": { - "count": 14, - "covered": 12, - "notcovered": 2, - "percent": 85.71428571428571 - } - } - } - ], - "totals": { - "functions": { - "count": 2, - "covered": 2, - "percent": 100 - }, - "instantiations": { - "count": 2, - "covered": 2, - "percent": 100 - }, - "lines": { - "count": 21, - "covered": 17, - "percent": 80.95238095238095 - }, - "regions": { - "count": 14, - "covered": 12, - "notcovered": 2, - "percent": 85.71428571428571 - } - } - } - ], - "type": "llvm.coverage.json.export", - "version": "2.0.1" -} diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.panic_unwind.json b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.panic_unwind.json deleted file mode 100644 index 5b13109dbe6..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.panic_unwind.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "data": [ - { - "files": [ - { - "filename": "../coverage/panic_unwind.rs", - "summary": { - "functions": { - "count": 2, - "covered": 2, - "percent": 100 - }, - "instantiations": { - "count": 2, - "covered": 2, - "percent": 100 - }, - "lines": { - "count": 17, - "covered": 14, - "percent": 82.35294117647058 - }, - "regions": { - "count": 13, - "covered": 11, - "notcovered": 2, - "percent": 84.61538461538461 - } - } - } - ], - "totals": { - "functions": { - "count": 2, - "covered": 2, - "percent": 100 - }, - "instantiations": { - "count": 2, - "covered": 2, - "percent": 100 - }, - "lines": { - "count": 17, - "covered": 14, - "percent": 82.35294117647058 - }, - "regions": { - "count": 13, - "covered": 11, - "notcovered": 2, - "percent": 84.61538461538461 - } - } - } - ], - "type": "llvm.coverage.json.export", - "version": "2.0.1" -} diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.partial_eq.json b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.partial_eq.json deleted file mode 100644 index bc0d0088041..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.partial_eq.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "data": [ - { - "files": [ - { - "filename": "../coverage/partial_eq.rs", - "summary": { - "functions": { - "count": 5, - "covered": 5, - "percent": 100 - }, - "instantiations": { - "count": 8, - "covered": 5, - "percent": 62.5 - }, - "lines": { - "count": 15, - "covered": 15, - "percent": 100 - }, - "regions": { - "count": 6, - "covered": 6, - "notcovered": 0, - "percent": 100 - } - } - } - ], - "totals": { - "functions": { - "count": 5, - "covered": 5, - "percent": 100 - }, - "instantiations": { - "count": 8, - "covered": 5, - "percent": 62.5 - }, - "lines": { - "count": 15, - "covered": 15, - "percent": 100 - }, - "regions": { - "count": 6, - "covered": 6, - "notcovered": 0, - "percent": 100 - } - } - } - ], - "type": "llvm.coverage.json.export", - "version": "2.0.1" -} diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.simple_loop.json b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.simple_loop.json deleted file mode 100644 index ada6bb062dd..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.simple_loop.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "data": [ - { - "files": [ - { - "filename": "../coverage/simple_loop.rs", - "summary": { - "functions": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "instantiations": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "lines": { - "count": 19, - "covered": 19, - "percent": 100 - }, - "regions": { - "count": 9, - "covered": 8, - "notcovered": 1, - "percent": 88.88888888888889 - } - } - } - ], - "totals": { - "functions": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "instantiations": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "lines": { - "count": 19, - "covered": 19, - "percent": 100 - }, - "regions": { - "count": 9, - "covered": 8, - "notcovered": 1, - "percent": 88.88888888888889 - } - } - } - ], - "type": "llvm.coverage.json.export", - "version": "2.0.1" -} diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.simple_match.json b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.simple_match.json deleted file mode 100644 index 63d1ae74c5f..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.simple_match.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "data": [ - { - "files": [ - { - "filename": "../coverage/simple_match.rs", - "summary": { - "functions": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "instantiations": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "lines": { - "count": 24, - "covered": 24, - "percent": 100 - }, - "regions": { - "count": 15, - "covered": 14, - "notcovered": 1, - "percent": 93.33333333333333 - } - } - } - ], - "totals": { - "functions": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "instantiations": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "lines": { - "count": 24, - "covered": 24, - "percent": 100 - }, - "regions": { - "count": 15, - "covered": 14, - "notcovered": 1, - "percent": 93.33333333333333 - } - } - } - ], - "type": "llvm.coverage.json.export", - "version": "2.0.1" -} diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.tight_inf_loop.json b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.tight_inf_loop.json deleted file mode 100644 index 872560384eb..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.tight_inf_loop.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "data": [ - { - "files": [ - { - "filename": "../coverage/tight_inf_loop.rs", - "summary": { - "functions": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "instantiations": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "lines": { - "count": 2, - "covered": 2, - "percent": 100 - }, - "regions": { - "count": 2, - "covered": 2, - "notcovered": 0, - "percent": 100 - } - } - } - ], - "totals": { - "functions": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "instantiations": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "lines": { - "count": 2, - "covered": 2, - "percent": 100 - }, - "regions": { - "count": 2, - "covered": 2, - "notcovered": 0, - "percent": 100 - } - } - } - ], - "type": "llvm.coverage.json.export", - "version": "2.0.1" -} diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.try_error_result.json b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.try_error_result.json deleted file mode 100644 index 78b935b1568..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.try_error_result.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "data": [ - { - "files": [ - { - "filename": "../coverage/try_error_result.rs", - "summary": { - "functions": { - "count": 2, - "covered": 2, - "percent": 100 - }, - "instantiations": { - "count": 2, - "covered": 2, - "percent": 100 - }, - "lines": { - "count": 20, - "covered": 18, - "percent": 90 - }, - "regions": { - "count": 19, - "covered": 14, - "notcovered": 5, - "percent": 73.68421052631578 - } - } - } - ], - "totals": { - "functions": { - "count": 2, - "covered": 2, - "percent": 100 - }, - "instantiations": { - "count": 2, - "covered": 2, - "percent": 100 - }, - "lines": { - "count": 20, - "covered": 18, - "percent": 90 - }, - "regions": { - "count": 19, - "covered": 14, - "notcovered": 5, - "percent": 73.68421052631578 - } - } - } - ], - "type": "llvm.coverage.json.export", - "version": "2.0.1" -} diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.while.json b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.while.json deleted file mode 100644 index 339c6555668..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.while.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "data": [ - { - "files": [ - { - "filename": "../coverage/while.rs", - "summary": { - "functions": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "instantiations": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "lines": { - "count": 4, - "covered": 3, - "percent": 75 - }, - "regions": { - "count": 4, - "covered": 3, - "notcovered": 1, - "percent": 75 - } - } - } - ], - "totals": { - "functions": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "instantiations": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "lines": { - "count": 4, - "covered": 3, - "percent": 75 - }, - "regions": { - "count": 4, - "covered": 3, - "notcovered": 1, - "percent": 75 - } - } - } - ], - "type": "llvm.coverage.json.export", - "version": "2.0.1" -} diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.while_early_ret.json b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.while_early_ret.json deleted file mode 100644 index ad43f5d9926..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.while_early_ret.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "data": [ - { - "files": [ - { - "filename": "../coverage/while_early_ret.rs", - "summary": { - "functions": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "instantiations": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "lines": { - "count": 17, - "covered": 15, - "percent": 88.23529411764706 - }, - "regions": { - "count": 9, - "covered": 7, - "notcovered": 2, - "percent": 77.77777777777779 - } - } - } - ], - "totals": { - "functions": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "instantiations": { - "count": 1, - "covered": 1, - "percent": 100 - }, - "lines": { - "count": 17, - "covered": 15, - "percent": 88.23529411764706 - }, - "regions": { - "count": 9, - "covered": 7, - "notcovered": 2, - "percent": 77.77777777777779 - } - } - } - ], - "type": "llvm.coverage.json.export", - "version": "2.0.1" -} diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.yield.json b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.yield.json deleted file mode 100644 index 9f25bc971c5..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.yield.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "data": [ - { - "files": [ - { - "filename": "../coverage/yield.rs", - "summary": { - "functions": { - "count": 3, - "covered": 3, - "percent": 100 - }, - "instantiations": { - "count": 3, - "covered": 3, - "percent": 100 - }, - "lines": { - "count": 23, - "covered": 16, - "percent": 69.56521739130434 - }, - "regions": { - "count": 22, - "covered": 16, - "notcovered": 6, - "percent": 72.72727272727273 - } - } - } - ], - "totals": { - "functions": { - "count": 3, - "covered": 3, - "percent": 100 - }, - "instantiations": { - "count": 3, - "covered": 3, - "percent": 100 - }, - "lines": { - "count": 23, - "covered": 16, - "percent": 69.56521739130434 - }, - "regions": { - "count": 22, - "covered": 16, - "notcovered": 6, - "percent": 72.72727272727273 - } - } - } - ], - "type": "llvm.coverage.json.export", - "version": "2.0.1" -} diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.abort.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.abort.txt deleted file mode 100644 index 40c9c71a2aa..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.abort.txt +++ /dev/null @@ -1,35 +0,0 @@ - 1| |#![feature(unwind_attributes)] - 2| |#![allow(unused_assignments)] - 3| | - 4| |#[unwind(aborts)] - 5| |fn might_abort(should_abort: bool) { - 6| 4| if should_abort { - 7| 0| println!("aborting..."); - 8| 0| panic!("panics and aborts"); - 9| 4| } else { - 10| 4| println!("Don't Panic"); - 11| 4| } - 12| 4|} - 13| | - 14| |fn main() -> Result<(),u8> { - 15| 1| let mut countdown = 10; - 16| 11| while countdown > 0 { - 17| 10| if countdown < 5 { - 18| 4| might_abort(false); - 19| 6| } - 20| 10| countdown -= 1; - 21| | } - 22| 1| Ok(()) - 23| 1|} - 24| | - 25| |// Notes: - 26| |// 1. Compare this program and its coverage results to those of the similar tests - 27| |// `panic_unwind.rs` and `try_error_result.rs`. - 28| |// 2. This test confirms the coverage generated when a program includes `TerminatorKind::Abort`. - 29| |// 3. The test does not invoke the abort. By executing to a successful completion, the coverage - 30| |// results show where the program did and did not execute. - 31| |// 4. If the program actually aborted, the coverage counters would not be saved (which "works as - 32| |// intended"). Coverage results would show no executed coverage regions. - 33| |// 6. If `should_abort` is `true` and the program aborts, the program exits with a `132` status - 34| |// (on Linux at least). - diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.assert.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.assert.txt deleted file mode 100644 index a6efcbabd35..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.assert.txt +++ /dev/null @@ -1,34 +0,0 @@ - 1| |#![allow(unused_assignments)] - 2| |// expect-exit-status-101 - 3| | - 4| |fn might_fail_assert(one_plus_one: u32) { - 5| 4| println!("does 1 + 1 = {}?", one_plus_one); - 6| 4| assert_eq!(1 + 1, one_plus_one, "the argument was wrong"); - ^1 - 7| 3|} - 8| | - 9| |fn main() -> Result<(),u8> { - 10| 1| let mut countdown = 10; - 11| 10| while countdown > 0 { - 12| 10| if countdown == 1 { - 13| 0| might_fail_assert(3); - 14| 10| } else if countdown < 5 { - 15| 3| might_fail_assert(2); - 16| 15| } - 17| 9| countdown -= 1; - 18| | } - 19| 0| Ok(()) - 20| 0|} - 21| | - 22| |// Notes: - 23| |// 1. Compare this program and its coverage results to those of the very similar test - 24| |// `panic_unwind.rs`, and similar tests `abort.rs` and `try_error_result.rs`. - 25| |// 2. This test confirms the coverage generated when a program passes or fails an `assert!()` or - 26| |// related `assert_*!()` macro. - 27| |// 3. Notably, the `assert` macros *do not* generate `TerminatorKind::Assert`. The macros produce - 28| |// conditional expressions, `TerminatorKind::SwitchInt` branches, and a possible call to - 29| |// `begin_panic_fmt()` (that begins a panic unwind, if the assertion test fails). - 30| |// 4. `TerminatoKind::Assert` is, however, also present in the MIR generated for this test - 31| |// (and in many other coverage tests). The `Assert` terminator is typically generated by the - 32| |// Rust compiler to check for runtime failures, such as numeric overflows. - diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.async.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.async.txt deleted file mode 100644 index b5d99732102..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.async.txt +++ /dev/null @@ -1,66 +0,0 @@ - 1| |#![allow(unused_assignments)] - 2| | - 3| |// require-rust-edition-2018 - 4| | - 5| 1|async fn f() -> u8 { 1 } - 6| | - 7| |async fn foo() -> [bool; 10] { [false; 10] } - 8| | - 9| |pub async fn g(x: u8) { - 10| | match x { - 11| | y if f().await == y => (), - 12| | _ => (), - 13| | } - 14| 1|} - 15| | - 16| |// #78366: check the reference to the binding is recorded even if the binding is not autorefed - 17| | - 18| |async fn h(x: usize) { - 19| | match x { - 20| | y if foo().await[y] => (), - 21| | _ => (), - 22| | } - 23| 1|} - 24| | - 25| 1|async fn i(x: u8) { - 26| 1| match x { - 27| 1| y if f().await == y + 1 => (), - ^0 ^0 - 28| 1| _ => (), - 29| | } - 30| 2|} - 31| | - 32| 1|fn main() { - 33| 1| let _ = g(10); - 34| 1| let _ = h(9); - 35| 1| let mut future = Box::pin(i(8)); - 36| 1| executor::block_on(future.as_mut()); - 37| 1|} - 38| | - 39| |mod executor { - 40| | use core::{ - 41| | future::Future, - 42| | pin::Pin, - 43| | task::{Context, Poll, RawWaker, RawWakerVTable, Waker}, - 44| | }; - 45| | - 46| | pub fn block_on(mut future: F) -> F::Output { - 47| 1| let mut future = unsafe { Pin::new_unchecked(&mut future) }; - 48| 1| - 49| 1| static VTABLE: RawWakerVTable = RawWakerVTable::new( - 50| 1| |_| unimplemented!("clone"), - 51| 1| |_| unimplemented!("wake"), - 52| 1| |_| unimplemented!("wake_by_ref"), - 53| 1| |_| (), - 54| 1| ); - 55| 1| let waker = unsafe { Waker::from_raw(RawWaker::new(core::ptr::null(), &VTABLE)) }; - 56| 1| let mut context = Context::from_waker(&waker); - 57| | - 58| | loop { - 59| 1| if let Poll::Ready(val) = future.as_mut().poll(&mut context) { - 60| 1| break val; - 61| | } - 62| 0| } - 63| 1| } - 64| |} - diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.closure.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.closure.txt deleted file mode 100644 index aef26a62e25..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.closure.txt +++ /dev/null @@ -1,94 +0,0 @@ - 1| |#![allow(unused_assignments, unused_variables)] - 2| | - 3| 1|fn main() { - 4| 1| // Initialize test constants in a way that cannot be determined at compile time, to ensure - 5| 1| // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from - 6| 1| // dependent conditions. - 7| 1| let is_true = std::env::args().len() == 1; - 8| 1| let is_false = ! is_true; - 9| 1| - 10| 1| let mut some_string = Some(String::from("the string content")); - 11| 1| println!( - 12| 1| "The string or alt: {}" - 13| 1| , - 14| 1| some_string - 15| 1| . - 16| 1| unwrap_or_else - 17| 1| ( - 18| 1| || - 19| | { - 20| 0| let mut countdown = 0; - 21| 0| if is_false { - 22| 0| countdown = 10; - 23| 0| } - 24| 0| "alt string 1".to_owned() - 25| 1| } - 26| 1| ) - 27| 1| ); - 28| 1| - 29| 1| some_string = Some(String::from("the string content")); - 30| 1| let - 31| 1| a - 32| 1| = - 33| 1| || - 34| | { - 35| 0| let mut countdown = 0; - 36| 0| if is_false { - 37| 0| countdown = 10; - 38| 0| } - 39| 0| "alt string 2".to_owned() - 40| 1| }; - 41| 1| println!( - 42| 1| "The string or alt: {}" - 43| 1| , - 44| 1| some_string - 45| 1| . - 46| 1| unwrap_or_else - 47| 1| ( - 48| 1| a - 49| 1| ) - 50| 1| ); - 51| 1| - 52| 1| some_string = None; - 53| 1| println!( - 54| 1| "The string or alt: {}" - 55| 1| , - 56| 1| some_string - 57| 1| . - 58| 1| unwrap_or_else - 59| 1| ( - 60| 1| || - 61| | { - 62| 1| let mut countdown = 0; - 63| 1| if is_false { - 64| 0| countdown = 10; - 65| 1| } - 66| 1| "alt string 3".to_owned() - 67| 1| } - 68| 1| ) - 69| 1| ); - 70| 1| - 71| 1| some_string = None; - 72| 1| let - 73| 1| a - 74| 1| = - 75| 1| || - 76| | { - 77| 1| let mut countdown = 0; - 78| 1| if is_false { - 79| 0| countdown = 10; - 80| 1| } - 81| 1| "alt string 4".to_owned() - 82| 1| }; - 83| 1| println!( - 84| 1| "The string or alt: {}" - 85| 1| , - 86| 1| some_string - 87| 1| . - 88| 1| unwrap_or_else - 89| 1| ( - 90| 1| a - 91| 1| ) - 92| 1| ); - 93| 1|} - diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.conditions.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.conditions.txt deleted file mode 100644 index e55a574c056..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.conditions.txt +++ /dev/null @@ -1,106 +0,0 @@ - 1| |#![allow(unused_assignments, unused_variables)] - 2| | - 3| |fn main() { - 4| 1| let mut countdown = 0; - 5| 1| if true { - 6| 1| countdown = 10; - 7| 1| } - 8| | - 9| | const B: u32 = 100; - 10| 1| let x = if countdown > 7 { - 11| 1| countdown -= 4; - 12| 1| B - 13| 0| } else if countdown > 2 { - 14| 0| if countdown < 1 || countdown > 5 || countdown != 9 { - 15| 0| countdown = 0; - 16| 0| } - 17| 0| countdown -= 5; - 18| 0| countdown - 19| | } else { - 20| 0| return; - 21| | }; - 22| | - 23| 1| let mut countdown = 0; - 24| 1| if true { - 25| 1| countdown = 10; - 26| 1| } - 27| | - 28| 1| if countdown > 7 { - 29| 1| countdown -= 4; - 30| 1| } else if countdown > 2 { - ^0 - 31| 0| if countdown < 1 || countdown > 5 || countdown != 9 { - 32| 0| countdown = 0; - 33| 0| } - 34| 0| countdown -= 5; - 35| | } else { - 36| 0| return; - 37| | } - 38| | - 39| 1| if true { - 40| | // Demonstrate the difference with `TerminatorKind::Assert` as of 2020-11-15. Assert is no - 41| | // longer treated as a `BasicCoverageBlock` terminator, which changed the coverage region, - 42| | // for the executed `then` block above, to include the closing brace on line 30. That - 43| | // changed the line count, but the coverage code region (for the `else if` condition) is - 44| | // still valid. - 45| | // - 46| | // Note that `if` (then) and `else` blocks include the closing brace in their coverage - 47| | // code regions when the last line in the block ends in a semicolon, because the Rust - 48| | // compiler inserts a `StatementKind::Assign` to assign `const ()` to a `Place`, for the - 49| | // empty value for the executed block. When the last line does not end in a semicolon - 50| | // (that is, when the block actually results in a value), the additional `Assign` is not - 51| | // generated, and the brace is not included. - 52| 1| let mut countdown = 0; - 53| 1| if true { - 54| 1| countdown = 10; - 55| 1| } - 56| | - 57| 1| if countdown > 7 { - 58| 1| countdown -= 4; - 59| 1| } - 60| | // The closing brace of the `then` branch is now included in the coverage region, and shown - 61| | // as "executed" (giving its line a count of 1 here). Since, in the original version above, - 62| | // the closing brace shares the same line as the `else if` conditional expression (which is - 63| | // not executed if the first `then` condition is true), only the condition's code region is - 64| | // marked with a count of 0 now. - 65| 0| else if countdown > 2 { - 66| 0| if countdown < 1 || countdown > 5 || countdown != 9 { - 67| 0| countdown = 0; - 68| 0| } - 69| 0| countdown -= 5; - 70| | } else { - 71| 0| return; - 72| | } - 73| 1| } - 74| | - 75| 1| let mut countdown = 0; - 76| 1| if true { - 77| 1| countdown = 1; - 78| 1| } - 79| | - 80| 1| let z = if countdown > 7 { - ^0 - 81| 0| countdown -= 4; - 82| 1| } else if countdown > 2 { - 83| 0| if countdown < 1 || countdown > 5 || countdown != 9 { - 84| 0| countdown = 0; - 85| 0| } - 86| 0| countdown -= 5; - 87| | } else { - 88| 1| let should_be_reachable = countdown; - 89| 1| println!("reached"); - 90| 1| return; - 91| | }; - 92| | - 93| 0| let w = if countdown > 7 { - 94| 0| countdown -= 4; - 95| 0| } else if countdown > 2 { - 96| 0| if countdown < 1 || countdown > 5 || countdown != 9 { - 97| 0| countdown = 0; - 98| 0| } - 99| 0| countdown -= 5; - 100| | } else { - 101| 0| return; - 102| | }; - 103| 1|} - diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.drop_trait.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.drop_trait.txt deleted file mode 100644 index 72aa020ca16..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.drop_trait.txt +++ /dev/null @@ -1,34 +0,0 @@ - 1| |#![allow(unused_assignments)] - 2| |// expect-exit-status-1 - 3| | - 4| |struct Firework { - 5| | strength: i32, - 6| |} - 7| | - 8| |impl Drop for Firework { - 9| 2| fn drop(&mut self) { - 10| 2| println!("BOOM times {}!!!", self.strength); - 11| 2| } - 12| |} - 13| | - 14| |fn main() -> Result<(),u8> { - 15| 1| let _firecracker = Firework { strength: 1 }; - 16| 1| - 17| 1| let _tnt = Firework { strength: 100 }; - 18| | - 19| 1| if true { - 20| 1| println!("Exiting with error..."); - 21| 1| return Err(1); - 22| | } - 23| | - 24| | let _ = Firework { strength: 1000 }; - 25| | - 26| | Ok(()) - 27| 1|} - 28| | - 29| |// Expected program output: - 30| |// Exiting with error... - 31| |// BOOM times 100!!! - 32| |// BOOM times 1!!! - 33| |// Error: 1 - diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.generics.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.generics.txt deleted file mode 100644 index 86199d74763..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.generics.txt +++ /dev/null @@ -1,67 +0,0 @@ - 1| |#![allow(unused_assignments)] - 2| |// expect-exit-status-1 - 3| | - 4| |struct Firework where T: Copy + std::fmt::Display { - 5| | strength: T, - 6| |} - 7| | - 8| |impl Firework where T: Copy + std::fmt::Display { - 9| | #[inline(always)] - 10| 3| fn set_strength(&mut self, new_strength: T) { - 11| 3| self.strength = new_strength; - 12| 3| } - ------------------ - | >::set_strength: - | 10| 2| fn set_strength(&mut self, new_strength: T) { - | 11| 2| self.strength = new_strength; - | 12| 2| } - ------------------ - | >::set_strength: - | 10| 1| fn set_strength(&mut self, new_strength: T) { - | 11| 1| self.strength = new_strength; - | 12| 1| } - ------------------ - 13| |} - 14| | - 15| |impl Drop for Firework where T: Copy + std::fmt::Display { - 16| | #[inline(always)] - 17| 2| fn drop(&mut self) { - 18| 2| println!("BOOM times {}!!!", self.strength); - 19| 2| } - ------------------ - | as core::ops::drop::Drop>::drop: - | 17| 1| fn drop(&mut self) { - | 18| 1| println!("BOOM times {}!!!", self.strength); - | 19| 1| } - ------------------ - | as core::ops::drop::Drop>::drop: - | 17| 1| fn drop(&mut self) { - | 18| 1| println!("BOOM times {}!!!", self.strength); - | 19| 1| } - ------------------ - 20| |} - 21| | - 22| |fn main() -> Result<(),u8> { - 23| 1| let mut firecracker = Firework { strength: 1 }; - 24| 1| firecracker.set_strength(2); - 25| 1| - 26| 1| let mut tnt = Firework { strength: 100.1 }; - 27| 1| tnt.set_strength(200.1); - 28| 1| tnt.set_strength(300.3); - 29| | - 30| 1| if true { - 31| 1| println!("Exiting with error..."); - 32| 1| return Err(1); - 33| | } - 34| | - 35| | let _ = Firework { strength: 1000 }; - 36| | - 37| | Ok(()) - 38| 1|} - 39| | - 40| |// Expected program output: - 41| |// Exiting with error... - 42| |// BOOM times 100!!! - 43| |// BOOM times 1!!! - 44| |// Error: 1 - diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.if.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.if.txt deleted file mode 100644 index 85e6440ab37..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.if.txt +++ /dev/null @@ -1,30 +0,0 @@ - 1| |#![allow(unused_assignments, unused_variables)] - 2| | - 3| |fn main() { - 4| | // Initialize test constants in a way that cannot be determined at compile time, to ensure - 5| | // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from - 6| | // dependent conditions. - 7| | let - 8| 1| is_true - 9| 1| = - 10| 1| std::env::args().len() - 11| 1| == - 12| 1| 1 - 13| 1| ; - 14| 1| let - 15| 1| mut - 16| 1| countdown - 17| 1| = - 18| 1| 0 - 19| | ; - 20| | if - 21| 1| is_true - 22| 1| { - 23| 1| countdown - 24| 1| = - 25| 1| 10 - 26| 1| ; - 27| 1| } - ^0 - 28| 1|} - diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.if_else.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.if_else.txt deleted file mode 100644 index 5f899723e25..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.if_else.txt +++ /dev/null @@ -1,41 +0,0 @@ - 1| |#![allow(unused_assignments)] - 2| | - 3| |fn main() { - 4| | // Initialize test constants in a way that cannot be determined at compile time, to ensure - 5| | // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from - 6| | // dependent conditions. - 7| 1| let is_true = std::env::args().len() == 1; - 8| 1| - 9| 1| let mut countdown = 0; - 10| 1| if - 11| 1| is_true - 12| 1| { - 13| 1| countdown - 14| 1| = - 15| 1| 10 - 16| 1| ; - 17| 1| } - 18| | else // Note coverage region difference without semicolon - 19| | { - 20| 0| countdown - 21| 0| = - 22| 0| 100 - 23| | } - 24| | - 25| | if - 26| 1| is_true - 27| 1| { - 28| 1| countdown - 29| 1| = - 30| 1| 10 - 31| 1| ; - 32| 1| } - 33| | else - 34| 0| { - 35| 0| countdown - 36| 0| = - 37| 0| 100 - 38| 0| ; - 39| 0| } - 40| 1|} - diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.inner_items.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.inner_items.txt deleted file mode 100644 index efd9cd4f72d..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.inner_items.txt +++ /dev/null @@ -1,60 +0,0 @@ - 1| |#![allow(unused_assignments, unused_variables)] - 2| | - 3| |fn main() { - 4| | // Initialize test constants in a way that cannot be determined at compile time, to ensure - 5| | // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from - 6| | // dependent conditions. - 7| 1| let is_true = std::env::args().len() == 1; - 8| 1| - 9| 1| let mut countdown = 0; - 10| 1| if is_true { - 11| 1| countdown = 10; - 12| 1| } - ^0 - 13| | - 14| | mod in_mod { - 15| | const IN_MOD_CONST: u32 = 1000; - 16| | } - 17| | - 18| | fn in_func(a: u32) { - 19| 3| let b = 1; - 20| 3| let c = a + b; - 21| 3| println!("c = {}", c) - 22| 3| } - 23| | - 24| | struct InStruct { - 25| | in_struct_field: u32, - 26| | } - 27| | - 28| | const IN_CONST: u32 = 1234; - 29| | - 30| | trait InTrait { - 31| | fn trait_func(&mut self, incr: u32); - 32| | - 33| 1| fn default_trait_func(&mut self) { - 34| 1| in_func(IN_CONST); - 35| 1| self.trait_func(IN_CONST); - 36| 1| } - 37| | } - 38| | - 39| | impl InTrait for InStruct { - 40| 1| fn trait_func(&mut self, incr: u32) { - 41| 1| self.in_struct_field += incr; - 42| 1| in_func(self.in_struct_field); - 43| 1| } - 44| | } - 45| | - 46| | type InType = String; - 47| | - 48| 1| if is_true { - 49| 1| in_func(countdown); - 50| 1| } - ^0 - 51| | - 52| 1| let mut val = InStruct { - 53| 1| in_struct_field: 101, - 54| 1| }; - 55| 1| - 56| 1| val.default_trait_func(); - 57| 1|} - diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.lazy_boolean.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.lazy_boolean.txt deleted file mode 100644 index 1b503033911..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.lazy_boolean.txt +++ /dev/null @@ -1,65 +0,0 @@ - 1| |#![allow(unused_assignments, unused_variables)] - 2| | - 3| |fn main() { - 4| | // Initialize test constants in a way that cannot be determined at compile time, to ensure - 5| | // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from - 6| | // dependent conditions. - 7| 1| let is_true = std::env::args().len() == 1; - 8| 1| - 9| 1| let (mut a, mut b, mut c) = (0, 0, 0); - 10| 1| if is_true { - 11| 1| a = 1; - 12| 1| b = 10; - 13| 1| c = 100; - 14| 1| } - ^0 - 15| | let - 16| 1| somebool - 17| | = - 18| 1| a < b - 19| | || - 20| 1| b < c - ^0 - 21| | ; - 22| | let - 23| 1| somebool - 24| | = - 25| 1| b < a - 26| | || - 27| 1| b < c - 28| | ; - 29| 1| let somebool = a < b && b < c; - 30| 1| let somebool = b < a && b < c; - ^0 - 31| | - 32| | if - 33| 1| ! - 34| 1| is_true - 35| 0| { - 36| 0| a = 2 - 37| 0| ; - 38| 1| } - 39| | - 40| | if - 41| 1| is_true - 42| 1| { - 43| 1| b = 30 - 44| 1| ; - 45| 1| } - 46| | else - 47| 0| { - 48| 0| c = 400 - 49| 0| ; - 50| 0| } - 51| | - 52| 1| if !is_true { - 53| 0| a = 2; - 54| 1| } - 55| | - 56| 1| if is_true { - 57| 1| b = 30; - 58| 1| } else { - 59| 0| c = 400; - 60| 0| } - 61| 1|} - diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.loop_break_value.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.loop_break_value.txt deleted file mode 100644 index b0d668c6d76..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.loop_break_value.txt +++ /dev/null @@ -1,14 +0,0 @@ - 1| |#![allow(unused_assignments)] - 2| | - 3| 1|fn main() { - 4| 1| let result - 5| 1| = - 6| 1| loop - 7| 1| { - 8| 1| break - 9| 1| 10 - 10| 1| ; - 11| 1| } - 12| 1| ; - 13| 1|} - diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.loops_branches.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.loops_branches.txt deleted file mode 100644 index 3a969a6b898..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.loops_branches.txt +++ /dev/null @@ -1,38 +0,0 @@ - 1| |#![allow(unused_assignments)] - 2| | - 3| |// This test confirms an earlier problem was resolved, supporting the MIR graph generated by the - 4| |// structure of this `fmt` function. - 5| | - 6| |struct DebugTest; - 7| | - 8| |impl std::fmt::Debug for DebugTest { - 9| | fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { - 10| 1| if true { - 11| 1| if false { - 12| | while true { - 13| | } - 14| 1| } - 15| 1| write!(f, "error")?; - ^0 - 16| | } else { - 17| 1| } - 18| 1| Ok(()) - 19| 1| } - 20| |} - 21| | - 22| 1|fn main() { - 23| 1| let debug_test = DebugTest; - 24| 1| println!("{:?}", debug_test); - 25| 1|} - 26| | - 27| |/* - 28| | - 29| |This is the error message generated, before the issue was fixed: - 30| | - 31| |error: internal compiler error: compiler/rustc_mir/src/transform/coverage/mod.rs:374:42: - 32| |Error processing: DefId(0:6 ~ bug_incomplete_cov_graph_traversal_simplified[317d]::{impl#0}::fmt): - 33| |Error { message: "`TraverseCoverageGraphWithLoops` missed some `BasicCoverageBlock`s: - 34| |[bcb6, bcb7, bcb9]" } - 35| | - 36| |*/ - diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.nested_loops.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.nested_loops.txt deleted file mode 100644 index dd86a85815b..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.nested_loops.txt +++ /dev/null @@ -1,26 +0,0 @@ - 1| |fn main() { - 2| 1| let is_true = std::env::args().len() == 1; - 3| 1| let mut countdown = 10; - 4| | - 5| 1| 'outer: while countdown > 0 { - 6| 1| let mut a = 100; - 7| 1| let mut b = 100; - 8| 3| for _ in 0..50 { - 9| 3| if a < 30 { - 10| 0| break; - 11| | } - 12| 3| a -= 5; - 13| 3| b -= 5; - 14| 3| if b < 90 { - 15| 1| a -= 10; - 16| 1| if is_true { - 17| 1| break 'outer; - 18| 0| } else { - 19| 0| a -= 2; - 20| 0| } - 21| 2| } - 22| 2| } - 23| 0| countdown -= 1; - 24| 0| } - 25| 1|} - diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.overflow.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.overflow.txt deleted file mode 100644 index 322de1da25a..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.overflow.txt +++ /dev/null @@ -1,64 +0,0 @@ - 1| |#![allow(unused_assignments)] - 2| |// expect-exit-status-101 - 3| | - 4| |fn might_overflow(to_add: u32) -> u32 { - 5| 4| if to_add > 5 { - 6| 1| println!("this will probably overflow"); - 7| 3| } - 8| 4| let add_to = u32::MAX - 5; - 9| 4| println!("does {} + {} overflow?", add_to, to_add); - 10| 4| let result = to_add + add_to; - 11| 4| println!("continuing after overflow check"); - 12| 4| result - 13| 4|} - 14| | - 15| |fn main() -> Result<(),u8> { - 16| 1| let mut countdown = 10; - 17| 10| while countdown > 0 { - 18| 10| if countdown == 1 { - 19| 0| let result = might_overflow(10); - 20| 0| println!("Result: {}", result); - 21| 10| } else if countdown < 5 { - 22| 3| let result = might_overflow(1); - 23| 3| println!("Result: {}", result); - 24| 15| } - 25| 9| countdown -= 1; - 26| | } - 27| 0| Ok(()) - 28| 0|} - 29| | - 30| |// Notes: - 31| |// 1. Compare this program and its coverage results to those of the very similar test `assert.rs`, - 32| |// and similar tests `panic_unwind.rs`, abort.rs` and `try_error_result.rs`. - 33| |// 2. This test confirms the coverage generated when a program passes or fails a - 34| |// compiler-generated `TerminatorKind::Assert` (based on an overflow check, in this case). - 35| |// 3. Similar to how the coverage instrumentation handles `TerminatorKind::Call`, - 36| |// compiler-generated assertion failures are assumed to be a symptom of a program bug, not - 37| |// expected behavior. To simplify the coverage graphs and keep instrumented programs as - 38| |// small and fast as possible, `Assert` terminators are assumed to always succeed, and - 39| |// therefore are considered "non-branching" terminators. So, an `Assert` terminator does not - 40| |// get its own coverage counter. - 41| |// 4. After an unhandled panic or failed Assert, coverage results may not always be intuitive. - 42| |// In this test, the final count for the statements after the `if` block in `might_overflow()` - 43| |// is 4, even though the lines after `to_add + add_to` were executed only 3 times. Depending - 44| |// on the MIR graph and the structure of the code, this count could have been 3 (which might - 45| |// have been valid for the overflowed add `+`, but should have been 4 for the lines before - 46| |// the overflow. The reason for this potential uncertainty is, a `CounterKind` is incremented - 47| |// via StatementKind::Counter at the end of the block, but (as in the case in this test), - 48| |// a CounterKind::Expression is always evaluated. In this case, the expression was based on - 49| |// a `Counter` incremented as part of the evaluation of the `if` expression, which was - 50| |// executed, and counted, 4 times, before reaching the overflow add. - 51| | - 52| |// If the program did not overflow, the coverage for `might_overflow()` would look like this: - 53| |// - 54| |// 4| |fn might_overflow(to_add: u32) -> u32 { - 55| |// 5| 4| if to_add > 5 { - 56| |// 6| 0| println!("this will probably overflow"); - 57| |// 7| 4| } - 58| |// 8| 4| let add_to = u32::MAX - 5; - 59| |// 9| 4| println!("does {} + {} overflow?", add_to, to_add); - 60| |// 10| 4| let result = to_add + add_to; - 61| |// 11| 4| println!("continuing after overflow check"); - 62| |// 12| 4| result - 63| |// 13| 4|} - diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.panic_unwind.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.panic_unwind.txt deleted file mode 100644 index f5149c11b7b..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.panic_unwind.txt +++ /dev/null @@ -1,50 +0,0 @@ - 1| |#![allow(unused_assignments)] - 2| |// expect-exit-status-101 - 3| | - 4| |fn might_panic(should_panic: bool) { - 5| 4| if should_panic { - 6| 1| println!("panicking..."); - 7| 1| panic!("panics"); - 8| 3| } else { - 9| 3| println!("Don't Panic"); - 10| 3| } - 11| 3|} - 12| | - 13| |fn main() -> Result<(),u8> { - 14| 1| let mut countdown = 10; - 15| 10| while countdown > 0 { - 16| 10| if countdown == 1 { - 17| 0| might_panic(true); - 18| 10| } else if countdown < 5 { - 19| 3| might_panic(false); - 20| 15| } - 21| 9| countdown -= 1; - 22| | } - 23| 0| Ok(()) - 24| 0|} - 25| | - 26| |// Notes: - 27| |// 1. Compare this program and its coverage results to those of the similar tests `abort.rs` and - 28| |// `try_error_result.rs`. - 29| |// 2. Since the `panic_unwind.rs` test is allowed to unwind, it is also allowed to execute the - 30| |// normal program exit cleanup, including writing out the current values of the coverage - 31| |// counters. - 32| |// 3. The coverage results show (interestingly) that the `panic!()` call did execute, but it does - 33| |// not show coverage of the `if countdown == 1` branch in `main()` that calls - 34| |// `might_panic(true)` (causing the call to `panic!()`). - 35| |// 4. The reason `main()`s `if countdown == 1` branch, calling `might_panic(true)`, appears - 36| |// "uncovered" is, InstrumentCoverage (intentionally) treats `TerminatorKind::Call` terminators - 37| |// as non-branching, because when a program executes normally, they always are. Errors handled - 38| |// via the try `?` operator produce error handling branches that *are* treated as branches in - 39| |// coverage results. By treating calls without try `?` operators as non-branching (assumed to - 40| |// return normally and continue) the coverage graph can be simplified, producing smaller, - 41| |// faster binaries, and cleaner coverage results. - 42| |// 5. The reason the coverage results actually show `panic!()` was called is most likely because - 43| |// `panic!()` is a macro, not a simple function call, and there are other `Statement`s and/or - 44| |// `Terminator`s that execute with a coverage counter before the panic and unwind occur. - 45| |// 6. By best practice, programs should not panic. By design, the coverage implementation will not - 46| |// incur additional cost (in program size and execution time) to improve coverage results for - 47| |// an event that is not supposted to happen. - 48| |// 7. FIXME(#78544): This issue describes a feature request for a proposed option to enable - 49| |// more accurate coverage results for tests that intentionally panic. - diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.partial_eq.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.partial_eq.txt deleted file mode 100644 index d16a0a9c4c8..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.partial_eq.txt +++ /dev/null @@ -1,111 +0,0 @@ - 1| |// This test confirms an earlier problem was resolved, supporting the MIR graph generated by the - 2| |// structure of this test. - 3| | - 4| 2|#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] - ^1 ^1 - ------------------ - | Unexecuted instantiation: ::gt - ------------------ - | Unexecuted instantiation: ::le - ------------------ - | Unexecuted instantiation: ::ge - ------------------ - | ::lt: - | 4| 1|#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] - ------------------ - 5| |pub struct Version { - 6| | major: usize, - 7| 1| minor: usize, - 8| | patch: usize, - 9| |} - 10| | - 11| |impl Version { - 12| | pub fn new(major: usize, minor: usize, patch: usize) -> Self { - 13| 2| Self { - 14| 2| major, - 15| 2| minor, - 16| 2| patch, - 17| 2| } - 18| 2| } - 19| |} - 20| | - 21| 1|fn main() { - 22| 1| let version_3_2_1 = Version::new(3, 2, 1); - 23| 1| let version_3_3_0 = Version::new(3, 3, 0); - 24| 1| - 25| 1| println!("{:?} < {:?} = {}", version_3_2_1, version_3_3_0, version_3_2_1 < version_3_3_0); - 26| 1|} - 27| | - 28| |/* - 29| | - 30| |This test verifies a bug was fixed that otherwise generated this error: - 31| | - 32| |thread 'rustc' panicked at 'No counters provided the source_hash for function: - 33| | Instance { - 34| | def: Item(WithOptConstParam { - 35| | did: DefId(0:101 ~ autocfg[c44a]::version::{impl#2}::partial_cmp), - 36| | const_param_did: None - 37| | }), - 38| | substs: [] - 39| | }' - 40| |The `PartialOrd` derived by `Version` happened to generate a MIR that generated coverage - 41| |without a code region associated with any `Counter`. Code regions were associated with at least - 42| |one expression, which is allowed, but the `function_source_hash` was only passed to the codegen - 43| |(coverage mapgen) phase from a `Counter`s code region. A new method was added to pass the - 44| |`function_source_hash` without a code region, if necessary. - 45| | - 46| |*/ - 47| | - 48| |// FIXME(richkadel): It may be worth investigating why the coverage report for this test produces - 49| |// the following results: - 50| | - 51| |/* - 52| | - 53| |1. Why are their two counts below different characters (first and last) of `PartialOrd`, on line 17? - 54| | - 55| |2. Line 17 is counted twice, but the `::lt` instance shows a line count of 1? Is there a missing - 56| | line count with a different instance? Or was it really only called once? - 57| | - 58| |3. Line 20 shows another line count (of 1) for a line within a `struct` declaration (on only one of - 59| | its 3 fields). I doubt the specific field (`minor`) is relevant, but rather I suspect there's a - 60| | problem computing the file position here, for some reason. - 61| | - 62| | - 63| | 16| | - 64| | 17| 2|#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] - 65| | ^1 ^1 - 66| |------------------ - 67| ||Unexecuted instantiation: ::gt - 68| |------------------ - 69| ||Unexecuted instantiation: ::le - 70| |------------------ - 71| ||Unexecuted instantiation: ::ge - 72| |------------------ - 73| ||::lt: - 74| || 17| 1|#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] - 75| |------------------ - 76| | 18| |pub struct Version { - 77| | 19| | major: usize, - 78| | 20| 1| minor: usize, - 79| | 21| | patch: usize, - 80| | 22| |} - 81| | 23| | - 82| | 24| |impl Version { - 83| | 25| | pub fn new(major: usize, minor: usize, patch: usize) -> Self { - 84| | 26| 2| Version { - 85| | 27| 2| major, - 86| | 28| 2| minor, - 87| | 29| 2| patch, - 88| | 30| 2| } - 89| | 31| 2| } - 90| | 32| |} - 91| | 33| | - 92| | 34| 1|fn main() { - 93| | 35| 1| let version_3_2_1 = Version::new(3, 2, 1); - 94| | 36| 1| let version_3_3_0 = Version::new(3, 3, 0); - 95| | 37| 1| - 96| | 38| 1| println!("{:?} < {:?} = {}", version_3_2_1, version_3_3_0, version_3_2_1 < version - 97| |_3_3_0); - 98| | 39| 1|} - 99| |*/ - diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.simple_loop.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.simple_loop.txt deleted file mode 100644 index 064930dd75c..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.simple_loop.txt +++ /dev/null @@ -1,37 +0,0 @@ - 1| |#![allow(unused_assignments)] - 2| | - 3| |fn main() { - 4| | // Initialize test constants in a way that cannot be determined at compile time, to ensure - 5| | // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from - 6| | // dependent conditions. - 7| 1| let is_true = std::env::args().len() == 1; - 8| 1| - 9| 1| let mut countdown = 0; - 10| | - 11| | if - 12| 1| is_true - 13| 1| { - 14| 1| countdown - 15| 1| = - 16| 1| 10 - 17| 1| ; - 18| 1| } - ^0 - 19| | - 20| | loop - 21| | { - 22| | if - 23| 11| countdown - 24| 11| == - 25| 11| 0 - 26| | { - 27| 1| break - 28| | ; - 29| | } - 30| 10| countdown - 31| 10| -= - 32| 10| 1 - 33| | ; - 34| 1| } - 35| 1|} - diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.simple_match.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.simple_match.txt deleted file mode 100644 index 1f7e71d3eb0..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.simple_match.txt +++ /dev/null @@ -1,46 +0,0 @@ - 1| |#![allow(unused_assignments)] - 2| | - 3| |fn main() { - 4| | // Initialize test constants in a way that cannot be determined at compile time, to ensure - 5| | // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from - 6| | // dependent conditions. - 7| 1| let is_true = std::env::args().len() == 1; - 8| 1| - 9| 1| let mut countdown = 1; - 10| 1| if is_true { - 11| 1| countdown = 0; - 12| 1| } - ^0 - 13| | - 14| | for - 15| 2| _ - 16| | in - 17| 3| 0..2 - 18| | { - 19| | let z - 20| | ; - 21| | match - 22| 2| countdown - 23| | { - 24| 1| x - 25| | if - 26| 2| x - 27| 2| < - 28| 2| 1 - ^1 - 29| | => - 30| 1| { - 31| 1| z = countdown - 32| 1| ; - 33| 1| let y = countdown - 34| 1| ; - 35| 1| countdown = 10 - 36| 1| ; - 37| 1| } - 38| | _ - 39| | => - 40| 1| {} - 41| | } - 42| 3| } - 43| 1|} - diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.tight_inf_loop.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.tight_inf_loop.txt deleted file mode 100644 index e02eac03a6b..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.tight_inf_loop.txt +++ /dev/null @@ -1,6 +0,0 @@ - 1| |fn main() { - 2| 1| if false { - 3| | loop {} - 4| | } - 5| 1|} - diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.try_error_result.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.try_error_result.txt deleted file mode 100644 index 6b3a8c39c63..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.try_error_result.txt +++ /dev/null @@ -1,38 +0,0 @@ - 1| |#![allow(unused_assignments)] - 2| |// expect-exit-status-1 - 3| | - 4| |fn call(return_error: bool) -> Result<(),()> { - 5| 6| if return_error { - 6| 1| Err(()) - 7| | } else { - 8| 5| Ok(()) - 9| | } - 10| 6|} - 11| | - 12| |fn main() -> Result<(),()> { - 13| 1| let mut - 14| 1| countdown = 10 - 15| | ; - 16| | for - 17| 6| _ - 18| | in - 19| 6| 0..10 - 20| | { - 21| 6| countdown - 22| 6| -= 1 - 23| 6| ; - 24| 6| if - 25| 6| countdown < 5 - 26| | { - 27| 1| call(/*return_error=*/ true)?; - 28| 0| call(/*return_error=*/ false)?; - 29| | } - 30| | else - 31| | { - 32| 5| call(/*return_error=*/ false)?; - ^0 - 33| 5| } - 34| 5| } - 35| 0| Ok(()) - 36| 1|} - diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.while.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.while.txt deleted file mode 100644 index 194325b6b9e..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.while.txt +++ /dev/null @@ -1,6 +0,0 @@ - 1| |fn main() { - 2| 1| let num = 9; - 3| 1| while num >= 10 { - 4| 0| } - 5| 1|} - diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.while_early_ret.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.while_early_ret.txt deleted file mode 100644 index 26041136d2f..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.while_early_ret.txt +++ /dev/null @@ -1,48 +0,0 @@ - 1| |#![allow(unused_assignments)] - 2| |// expect-exit-status-1 - 3| | - 4| |fn main() -> Result<(),u8> { - 5| 1| let mut countdown = 10; - 6| | while - 7| 7| countdown - 8| 7| > - 9| 7| 0 - 10| | { - 11| | if - 12| 7| countdown - 13| 7| < - 14| 7| 5 - 15| | { - 16| | return - 17| | if - 18| 1| countdown - 19| 1| > - 20| 1| 8 - 21| | { - 22| 0| Ok(()) - 23| | } - 24| | else - 25| | { - 26| 1| Err(1) - 27| | } - 28| | ; - 29| | } - 30| 6| countdown - 31| 6| -= - 32| 6| 1 - 33| | ; - 34| | } - 35| 0| Ok(()) - 36| 1|} - 37| | - 38| |// ISSUE(77553): Originally, this test had `Err(1)` on line 22 (instead of `Ok(())`) and - 39| |// `std::process::exit(2)` on line 26 (instead of `Err(1)`); and this worked as expected on Linux - 40| |// and MacOS. But on Windows (MSVC, at least), the call to `std::process::exit()` exits the program - 41| |// without saving the InstrProf coverage counters. The use of `std::process:exit()` is not critical - 42| |// to the coverage test for early returns, but this is a limitation that should be fixed. - 43| |// - 44| |// FIXME(richkadel): Consider creating a new tests for coverage when calling `std::process::exit()`, - 45| |// move the `ISSUE` comment to that test, and implement a new test directive that supports skipping - 46| |// coverage tests when targeting specific platforms (at least skipping Windows, or MSVC if the - 47| |// problem exists on MSVC only). - diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.yield.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.yield.txt deleted file mode 100644 index 28813dd6d0b..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.yield.txt +++ /dev/null @@ -1,38 +0,0 @@ - 1| |#![feature(generators, generator_trait)] - 2| |#![allow(unused_assignments)] - 3| | - 4| |use std::ops::{Generator, GeneratorState}; - 5| |use std::pin::Pin; - 6| | - 7| |fn main() { - 8| 1| let mut generator = || { - 9| 1| yield 1; - 10| 1| return "foo" - 11| 1| }; - 12| | - 13| 1| match Pin::new(&mut generator).resume(()) { - 14| 1| GeneratorState::Yielded(1) => {} - 15| 0| _ => panic!("unexpected value from resume"), - 16| | } - 17| 1| match Pin::new(&mut generator).resume(()) { - 18| 1| GeneratorState::Complete("foo") => {} - 19| 0| _ => panic!("unexpected value from resume"), - 20| | } - 21| | - 22| 1| let mut generator = || { - 23| 1| yield 1; - 24| 1| yield 2; - 25| 0| yield 3; - 26| 0| return "foo" - 27| 0| }; - 28| | - 29| 1| match Pin::new(&mut generator).resume(()) { - 30| 1| GeneratorState::Yielded(1) => {} - 31| 0| _ => panic!("unexpected value from resume"), - 32| | } - 33| 1| match Pin::new(&mut generator).resume(()) { - 34| 1| GeneratorState::Yielded(2) => {} - 35| 0| _ => panic!("unexpected value from resume"), - 36| | } - 37| 1|} - diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.abort.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.abort.txt deleted file mode 100644 index e787e5e152d..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.abort.txt +++ /dev/null @@ -1,41 +0,0 @@ -Counter in file 0 15:9 -> 15:27, #1 -Counter in file 0 16:11 -> 16:24, (#1 + (#2 + #3)) -Counter in file 0 17:12 -> 17:25, ((#1 + (#2 + #3)) - #4) -Counter in file 0 17:26 -> 19:10, #2 -Counter in file 0 19:10 -> 19:11, #3 -Counter in file 0 20:9 -> 20:23, (#2 + #3) -Counter in file 0 22:5 -> 23:2, #4 -Counter in file 0 6:8 -> 6:20, #1 -Counter in file 0 7:9 -> 8:37, #2 -Counter in file 0 9:12 -> 12:2, (#1 - #2) -Emitting segments for file: ../coverage/abort.rs -Combined regions: - 6:8 -> 6:20 (count=4) - 7:9 -> 8:37 (count=0) - 9:12 -> 12:2 (count=4) - 15:9 -> 15:27 (count=1) - 16:11 -> 16:24 (count=11) - 17:12 -> 17:25 (count=10) - 17:26 -> 19:10 (count=4) - 19:10 -> 19:11 (count=6) - 20:9 -> 20:23 (count=10) - 22:5 -> 23:2 (count=1) -Segment at 6:8 (count = 4), RegionEntry -Segment at 6:20 (count = 0), Skipped -Segment at 7:9 (count = 0), RegionEntry -Segment at 8:37 (count = 0), Skipped -Segment at 9:12 (count = 4), RegionEntry -Segment at 12:2 (count = 0), Skipped -Segment at 15:9 (count = 1), RegionEntry -Segment at 15:27 (count = 0), Skipped -Segment at 16:11 (count = 11), RegionEntry -Segment at 16:24 (count = 0), Skipped -Segment at 17:12 (count = 10), RegionEntry -Segment at 17:25 (count = 0), Skipped -Segment at 17:26 (count = 4), RegionEntry -Segment at 19:10 (count = 6), RegionEntry -Segment at 19:11 (count = 0), Skipped -Segment at 20:9 (count = 10), RegionEntry -Segment at 20:23 (count = 0), Skipped -Segment at 22:5 (count = 1), RegionEntry -Segment at 23:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.assert.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.assert.txt deleted file mode 100644 index 81cb6c03da7..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.assert.txt +++ /dev/null @@ -1,54 +0,0 @@ -Counter in file 0 10:9 -> 10:27, #1 -Counter in file 0 11:11 -> 11:24, (#1 + (#2 + (#3 + #4))) -Counter in file 0 12:12 -> 12:26, ((#1 + (#2 + (#3 + #4))) - #5) -Counter in file 0 12:27 -> 14:10, #2 -Counter in file 0 14:19 -> 14:32, (((#1 + (#2 + (#3 + #4))) - #5) - #2) -Counter in file 0 14:33 -> 16:10, #3 -Counter in file 0 16:10 -> 16:11, #4 -Counter in file 0 16:10 -> 16:11, (#3 + #4) -Counter in file 0 17:9 -> 17:23, (#2 + (#3 + #4)) -Counter in file 0 19:5 -> 20:2, #5 -Counter in file 0 5:5 -> 5:48, #1 -Counter in file 0 6:16 -> 6:21, (#1 + 0) -Counter in file 0 6:37 -> 6:61, #2 -Counter in file 0 7:1 -> 7:2, (#1 - #2) -Emitting segments for file: ../coverage/assert.rs -Combined regions: - 5:5 -> 5:48 (count=4) - 6:16 -> 6:21 (count=4) - 6:37 -> 6:61 (count=1) - 7:1 -> 7:2 (count=3) - 10:9 -> 10:27 (count=1) - 11:11 -> 11:24 (count=10) - 12:12 -> 12:26 (count=10) - 12:27 -> 14:10 (count=0) - 14:19 -> 14:32 (count=10) - 14:33 -> 16:10 (count=3) - 16:10 -> 16:11 (count=15) - 17:9 -> 17:23 (count=9) - 19:5 -> 20:2 (count=0) -Segment at 5:5 (count = 4), RegionEntry -Segment at 5:48 (count = 0), Skipped -Segment at 6:16 (count = 4), RegionEntry -Segment at 6:21 (count = 0), Skipped -Segment at 6:37 (count = 1), RegionEntry -Segment at 6:61 (count = 0), Skipped -Segment at 7:1 (count = 3), RegionEntry -Segment at 7:2 (count = 0), Skipped -Segment at 10:9 (count = 1), RegionEntry -Segment at 10:27 (count = 0), Skipped -Segment at 11:11 (count = 10), RegionEntry -Segment at 11:24 (count = 0), Skipped -Segment at 12:12 (count = 10), RegionEntry -Segment at 12:26 (count = 0), Skipped -Segment at 12:27 (count = 0), RegionEntry -Segment at 14:10 (count = 0), Skipped -Segment at 14:19 (count = 10), RegionEntry -Segment at 14:32 (count = 0), Skipped -Segment at 14:33 (count = 3), RegionEntry -Segment at 16:10 (count = 15), RegionEntry -Segment at 16:11 (count = 0), Skipped -Segment at 17:9 (count = 9), RegionEntry -Segment at 17:23 (count = 0), Skipped -Segment at 19:5 (count = 0), RegionEntry -Segment at 20:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.async.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.async.txt deleted file mode 100644 index f1f02faba53..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.async.txt +++ /dev/null @@ -1,85 +0,0 @@ -Counter in file 0 15:9 -> 15:75, #1 -Counter in file 0 15:9 -> 15:75, #1 -Counter in file 0 15:9 -> 15:75, #1 -Counter in file 0 47:13 -> 56:54, #1 -Counter in file 0 59:32 -> 59:35, ((#1 + #2) - #2) -Counter in file 0 59:39 -> 59:73, (#1 + #2) -Counter in file 0 60:23 -> 60:26, (((#1 + #2) - #2) + 0) -Counter in file 0 62:10 -> 62:11, #2 -Counter in file 0 63:5 -> 63:6, (((#1 + #2) - #2) + 0) -Counter in file 0 53:17 -> 53:19, #1 -Counter in file 0 7:44 -> 7:45, #1 -Counter in file 0 5:24 -> 5:25, #1 -Counter in file 0 5:22 -> 5:25, #1 -Counter in file 0 25:19 -> 26:12, #1 -Counter in file 0 27:9 -> 27:10, #3 -Counter in file 0 27:14 -> 27:17, (#1 + 0) -Counter in file 0 27:27 -> 27:32, #2 -Counter in file 0 27:32 -> 27:33, (#2 - #3) -Counter in file 0 27:36 -> 27:38, (#3 + 0) -Counter in file 0 28:14 -> 28:16, #4 -Counter in file 0 30:1 -> 30:2, (#3 + #4) -Counter in file 0 32:11 -> 37:2, #1 -Counter in file 0 30:1 -> 30:2, #1 -Counter in file 0 14:1 -> 14:2, #1 -Counter in file 0 23:1 -> 23:2, #1 -Emitting segments for file: ../coverage/async.rs -Combined regions: - 5:22 -> 5:25 (count=1) - 5:24 -> 5:25 (count=1) - 14:1 -> 14:2 (count=1) - 23:1 -> 23:2 (count=1) - 25:19 -> 26:12 (count=1) - 27:9 -> 27:10 (count=0) - 27:14 -> 27:17 (count=1) - 27:27 -> 27:32 (count=1) - 27:32 -> 27:33 (count=1) - 27:36 -> 27:38 (count=0) - 28:14 -> 28:16 (count=1) - 30:1 -> 30:2 (count=2) - 32:11 -> 37:2 (count=1) - 47:13 -> 56:54 (count=1) - 53:17 -> 53:19 (count=1) - 59:32 -> 59:35 (count=1) - 59:39 -> 59:73 (count=1) - 60:23 -> 60:26 (count=1) - 62:10 -> 62:11 (count=0) - 63:5 -> 63:6 (count=1) -Segment at 5:22 (count = 1), RegionEntry -Segment at 5:24 (count = 1), RegionEntry -Segment at 5:25 (count = 0), Skipped -Segment at 14:1 (count = 1), RegionEntry -Segment at 14:2 (count = 0), Skipped -Segment at 23:1 (count = 1), RegionEntry -Segment at 23:2 (count = 0), Skipped -Segment at 25:19 (count = 1), RegionEntry -Segment at 26:12 (count = 0), Skipped -Segment at 27:9 (count = 0), RegionEntry -Segment at 27:10 (count = 0), Skipped -Segment at 27:14 (count = 1), RegionEntry -Segment at 27:17 (count = 0), Skipped -Segment at 27:27 (count = 1), RegionEntry -Segment at 27:32 (count = 1), RegionEntry -Segment at 27:33 (count = 0), Skipped -Segment at 27:36 (count = 0), RegionEntry -Segment at 27:38 (count = 0), Skipped -Segment at 28:14 (count = 1), RegionEntry -Segment at 28:16 (count = 0), Skipped -Segment at 30:1 (count = 2), RegionEntry -Segment at 30:2 (count = 0), Skipped -Segment at 32:11 (count = 1), RegionEntry -Segment at 37:2 (count = 0), Skipped -Segment at 47:13 (count = 1), RegionEntry -Segment at 53:17 (count = 1), RegionEntry -Segment at 53:19 (count = 1) -Segment at 56:54 (count = 0), Skipped -Segment at 59:32 (count = 1), RegionEntry -Segment at 59:35 (count = 0), Skipped -Segment at 59:39 (count = 1), RegionEntry -Segment at 59:73 (count = 0), Skipped -Segment at 60:23 (count = 1), RegionEntry -Segment at 60:26 (count = 0), Skipped -Segment at 62:10 (count = 0), RegionEntry -Segment at 62:11 (count = 0), Skipped -Segment at 63:5 (count = 1), RegionEntry -Segment at 63:6 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.closure.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.closure.txt deleted file mode 100644 index fb797796e4e..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.closure.txt +++ /dev/null @@ -1,94 +0,0 @@ -Counter in file 0 20:21 -> 20:38, #1 -Counter in file 0 21:20 -> 21:28, (#1 + 0) -Counter in file 0 21:29 -> 23:18, #2 -Counter in file 0 23:18 -> 23:19, (#1 - #2) -Counter in file 0 24:17 -> 25:14, (#2 + (#1 - #2)) -Counter in file 0 3:11 -> 18:13, #1 -Counter in file 0 25:14 -> 33:9, (#1 + 0) -Counter in file 0 40:6 -> 60:13, (#1 + 0) -Counter in file 0 67:14 -> 75:9, (#1 + 0) -Counter in file 0 82:6 -> 93:2, (#1 + 0) -Counter in file 0 77:13 -> 77:30, #1 -Counter in file 0 78:12 -> 78:20, (#1 + 0) -Counter in file 0 78:21 -> 80:10, #2 -Counter in file 0 80:10 -> 80:11, (#1 - #2) -Counter in file 0 81:9 -> 82:6, (#2 + (#1 - #2)) -Counter in file 0 62:21 -> 62:38, #1 -Counter in file 0 63:20 -> 63:28, (#1 + 0) -Counter in file 0 63:29 -> 65:18, #2 -Counter in file 0 65:18 -> 65:19, (#1 - #2) -Counter in file 0 66:17 -> 67:14, (#2 + (#1 - #2)) -Counter in file 0 35:13 -> 35:30, #1 -Counter in file 0 36:12 -> 36:20, (#1 + 0) -Counter in file 0 36:21 -> 38:10, #2 -Counter in file 0 38:10 -> 38:11, (#1 - #2) -Counter in file 0 39:9 -> 40:6, (#2 + (#1 - #2)) -Emitting segments for file: ../coverage/closure.rs -Combined regions: - 3:11 -> 18:13 (count=1) - 20:21 -> 20:38 (count=0) - 21:20 -> 21:28 (count=0) - 21:29 -> 23:18 (count=0) - 23:18 -> 23:19 (count=0) - 24:17 -> 25:14 (count=0) - 25:14 -> 33:9 (count=1) - 35:13 -> 35:30 (count=0) - 36:12 -> 36:20 (count=0) - 36:21 -> 38:10 (count=0) - 38:10 -> 38:11 (count=0) - 39:9 -> 40:6 (count=0) - 40:6 -> 60:13 (count=1) - 62:21 -> 62:38 (count=1) - 63:20 -> 63:28 (count=1) - 63:29 -> 65:18 (count=0) - 65:18 -> 65:19 (count=1) - 66:17 -> 67:14 (count=1) - 67:14 -> 75:9 (count=1) - 77:13 -> 77:30 (count=1) - 78:12 -> 78:20 (count=1) - 78:21 -> 80:10 (count=0) - 80:10 -> 80:11 (count=1) - 81:9 -> 82:6 (count=1) - 82:6 -> 93:2 (count=1) -Segment at 3:11 (count = 1), RegionEntry -Segment at 18:13 (count = 0), Skipped -Segment at 20:21 (count = 0), RegionEntry -Segment at 20:38 (count = 0), Skipped -Segment at 21:20 (count = 0), RegionEntry -Segment at 21:28 (count = 0), Skipped -Segment at 21:29 (count = 0), RegionEntry -Segment at 23:18 (count = 0), RegionEntry -Segment at 23:19 (count = 0), Skipped -Segment at 24:17 (count = 0), RegionEntry -Segment at 25:14 (count = 1), RegionEntry -Segment at 33:9 (count = 0), Skipped -Segment at 35:13 (count = 0), RegionEntry -Segment at 35:30 (count = 0), Skipped -Segment at 36:12 (count = 0), RegionEntry -Segment at 36:20 (count = 0), Skipped -Segment at 36:21 (count = 0), RegionEntry -Segment at 38:10 (count = 0), RegionEntry -Segment at 38:11 (count = 0), Skipped -Segment at 39:9 (count = 0), RegionEntry -Segment at 40:6 (count = 1), RegionEntry -Segment at 60:13 (count = 0), Skipped -Segment at 62:21 (count = 1), RegionEntry -Segment at 62:38 (count = 0), Skipped -Segment at 63:20 (count = 1), RegionEntry -Segment at 63:28 (count = 0), Skipped -Segment at 63:29 (count = 0), RegionEntry -Segment at 65:18 (count = 1), RegionEntry -Segment at 65:19 (count = 0), Skipped -Segment at 66:17 (count = 1), RegionEntry -Segment at 67:14 (count = 1), RegionEntry -Segment at 75:9 (count = 0), Skipped -Segment at 77:13 (count = 1), RegionEntry -Segment at 77:30 (count = 0), Skipped -Segment at 78:12 (count = 1), RegionEntry -Segment at 78:20 (count = 0), Skipped -Segment at 78:21 (count = 0), RegionEntry -Segment at 80:10 (count = 1), RegionEntry -Segment at 80:11 (count = 0), Skipped -Segment at 81:9 (count = 1), RegionEntry -Segment at 82:6 (count = 1), RegionEntry -Segment at 93:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.conditions.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.conditions.txt deleted file mode 100644 index a4c1a9c0f12..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.conditions.txt +++ /dev/null @@ -1,304 +0,0 @@ -Counter in file 0 4:9 -> 4:26, #1 -Counter in file 0 5:8 -> 5:12, (#1 + 0) -Counter in file 0 5:13 -> 7:6, #2 -Counter in file 0 10:9 -> 10:10, (#3 + (#12 + #13)) -Counter in file 0 10:16 -> 10:29, (#2 + 0) -Counter in file 0 11:9 -> 12:10, #3 -Counter in file 0 13:15 -> 13:28, ((#2 + 0) - #3) -Counter in file 0 14:12 -> 14:25, #4 -Counter in file 0 14:29 -> 14:42, (#4 - #15) -Counter in file 0 14:42 -> 14:43, ((#4 - #15) - #16) -Counter in file 0 14:42 -> 14:43, (#15 + #16) -Counter in file 0 14:46 -> 14:60, #23 -Counter in file 0 14:60 -> 14:61, (#18 + #19) -Counter in file 0 14:60 -> 14:61, (#23 - #19) -Counter in file 0 14:61 -> 16:10, #12 -Counter in file 0 16:10 -> 16:11, #13 -Counter in file 0 17:9 -> 18:18, (#12 + #13) -Counter in file 0 20:9 -> 20:15, (((#2 + 0) - #3) - #4) -Counter in file 0 23:9 -> 23:26, ((#3 + (#12 + #13)) + 0) -Counter in file 0 24:8 -> 24:12, ((#3 + (#12 + #13)) + 0) -Counter in file 0 24:13 -> 26:6, #14 -Counter in file 0 28:8 -> 28:21, (#14 + 0) -Counter in file 0 28:22 -> 30:6, #17 -Counter in file 0 30:15 -> 30:28, ((#14 + 0) - #17) -Counter in file 0 31:12 -> 31:25, (((#14 + 0) - #17) - #8) -Counter in file 0 31:29 -> 31:42, ((((#14 + 0) - #17) - #8) - #24) -Counter in file 0 31:42 -> 31:43, (((((#14 + 0) - #17) - #8) - #24) - #25) -Counter in file 0 31:42 -> 31:43, (#24 + #25) -Counter in file 0 31:46 -> 31:60, #34 -Counter in file 0 31:60 -> 31:61, (#34 - #32) -Counter in file 0 31:60 -> 31:61, (#31 + #32) -Counter in file 0 31:61 -> 33:10, #20 -Counter in file 0 33:10 -> 33:11, #21 -Counter in file 0 34:9 -> 34:23, (#20 + #21) -Counter in file 0 36:9 -> 36:15, #8 -Counter in file 0 39:8 -> 39:12, (#17 + (#20 + #21)) -Counter in file 0 52:13 -> 52:30, #22 -Counter in file 0 53:12 -> 53:16, (#22 + 0) -Counter in file 0 53:17 -> 55:10, #26 -Counter in file 0 57:12 -> 57:25, (#26 + 0) -Counter in file 0 57:26 -> 59:10, #27 -Counter in file 0 65:17 -> 65:30, ((#26 + 0) - #27) -Counter in file 0 66:16 -> 66:29, (((#26 + 0) - #27) - #7) -Counter in file 0 66:33 -> 66:46, ((((#26 + 0) - #27) - #7) - #37) -Counter in file 0 66:46 -> 66:47, (#37 + #38) -Counter in file 0 66:46 -> 66:47, (((((#26 + 0) - #27) - #7) - #37) - #38) -Counter in file 0 66:50 -> 66:64, #47 -Counter in file 0 66:64 -> 66:65, (#47 - #42) -Counter in file 0 66:64 -> 66:65, (#41 + #42) -Counter in file 0 66:65 -> 68:14, #28 -Counter in file 0 68:14 -> 68:15, #29 -Counter in file 0 69:13 -> 69:27, (#28 + #29) -Counter in file 0 71:13 -> 71:19, #7 -Counter in file 0 73:6 -> 73:7, (#27 + (#28 + #29)) -Counter in file 0 75:9 -> 75:26, ((#27 + (#28 + #29)) + 0) -Counter in file 0 76:8 -> 76:12, (((#27 + (#28 + #29)) + 0) + 0) -Counter in file 0 76:13 -> 78:6, #30 -Counter in file 0 80:9 -> 80:10, (#33 + (#35 + #36)) -Counter in file 0 80:16 -> 80:29, (#30 + 0) -Counter in file 0 80:30 -> 82:6, #33 -Counter in file 0 82:15 -> 82:28, ((#30 + 0) - #33) -Counter in file 0 83:12 -> 83:25, (((#30 + 0) - #33) - #6) -Counter in file 0 83:29 -> 83:42, ((((#30 + 0) - #33) - #6) - #39) -Counter in file 0 83:42 -> 83:43, (#39 + #40) -Counter in file 0 83:42 -> 83:43, (((((#30 + 0) - #33) - #6) - #39) - #40) -Counter in file 0 83:46 -> 83:60, #48 -Counter in file 0 83:60 -> 83:61, (#43 + #44) -Counter in file 0 83:60 -> 83:61, (#48 - #44) -Counter in file 0 83:61 -> 85:10, #35 -Counter in file 0 85:10 -> 85:11, #36 -Counter in file 0 86:9 -> 86:23, (#35 + #36) -Counter in file 0 88:13 -> 90:15, #6 -Counter in file 0 93:9 -> 93:10, (#9 + (#10 + #11)) -Counter in file 0 93:16 -> 93:29, ((#33 + (#35 + #36)) + 0) -Counter in file 0 93:30 -> 95:6, #9 -Counter in file 0 95:15 -> 95:28, ((#33 + (#35 + #36)) - #9) -Counter in file 0 96:12 -> 96:25, (((#33 + (#35 + #36)) - #9) - #5) -Counter in file 0 96:29 -> 96:42, ((((#33 + (#35 + #36)) - #9) - #5) - #45) -Counter in file 0 96:42 -> 96:43, (#45 + #46) -Counter in file 0 96:42 -> 96:43, (((((#33 + (#35 + #36)) - #9) - #5) - #45) - #46) -Counter in file 0 96:46 -> 96:60, #51 -Counter in file 0 96:60 -> 96:61, (#49 + #50) -Counter in file 0 96:60 -> 96:61, (#51 - #50) -Counter in file 0 96:61 -> 98:10, #10 -Counter in file 0 98:10 -> 98:11, #11 -Counter in file 0 99:9 -> 99:23, (#10 + #11) -Counter in file 0 101:9 -> 101:15, #5 -Counter in file 0 103:1 -> 103:2, ((#9 + (#10 + #11)) + (((#5 + #6) + (#7 + #8)) + (((#2 + 0) - #3) - #4))) -Emitting segments for file: ../coverage/conditions.rs -Combined regions: - 4:9 -> 4:26 (count=1) - 5:8 -> 5:12 (count=1) - 5:13 -> 7:6 (count=1) - 10:9 -> 10:10 (count=1) - 10:16 -> 10:29 (count=1) - 11:9 -> 12:10 (count=1) - 13:15 -> 13:28 (count=0) - 14:12 -> 14:25 (count=0) - 14:29 -> 14:42 (count=0) - 14:42 -> 14:43 (count=0) - 14:46 -> 14:60 (count=0) - 14:60 -> 14:61 (count=0) - 14:61 -> 16:10 (count=0) - 16:10 -> 16:11 (count=0) - 17:9 -> 18:18 (count=0) - 20:9 -> 20:15 (count=0) - 23:9 -> 23:26 (count=1) - 24:8 -> 24:12 (count=1) - 24:13 -> 26:6 (count=1) - 28:8 -> 28:21 (count=1) - 28:22 -> 30:6 (count=1) - 30:15 -> 30:28 (count=0) - 31:12 -> 31:25 (count=0) - 31:29 -> 31:42 (count=0) - 31:42 -> 31:43 (count=0) - 31:46 -> 31:60 (count=0) - 31:60 -> 31:61 (count=0) - 31:61 -> 33:10 (count=0) - 33:10 -> 33:11 (count=0) - 34:9 -> 34:23 (count=0) - 36:9 -> 36:15 (count=0) - 39:8 -> 39:12 (count=1) - 52:13 -> 52:30 (count=1) - 53:12 -> 53:16 (count=1) - 53:17 -> 55:10 (count=1) - 57:12 -> 57:25 (count=1) - 57:26 -> 59:10 (count=1) - 65:17 -> 65:30 (count=0) - 66:16 -> 66:29 (count=0) - 66:33 -> 66:46 (count=0) - 66:46 -> 66:47 (count=0) - 66:50 -> 66:64 (count=0) - 66:64 -> 66:65 (count=0) - 66:65 -> 68:14 (count=0) - 68:14 -> 68:15 (count=0) - 69:13 -> 69:27 (count=0) - 71:13 -> 71:19 (count=0) - 73:6 -> 73:7 (count=1) - 75:9 -> 75:26 (count=1) - 76:8 -> 76:12 (count=1) - 76:13 -> 78:6 (count=1) - 80:9 -> 80:10 (count=0) - 80:16 -> 80:29 (count=1) - 80:30 -> 82:6 (count=0) - 82:15 -> 82:28 (count=1) - 83:12 -> 83:25 (count=0) - 83:29 -> 83:42 (count=0) - 83:42 -> 83:43 (count=0) - 83:46 -> 83:60 (count=0) - 83:60 -> 83:61 (count=0) - 83:61 -> 85:10 (count=0) - 85:10 -> 85:11 (count=0) - 86:9 -> 86:23 (count=0) - 88:13 -> 90:15 (count=1) - 93:9 -> 93:10 (count=0) - 93:16 -> 93:29 (count=0) - 93:30 -> 95:6 (count=0) - 95:15 -> 95:28 (count=0) - 96:12 -> 96:25 (count=0) - 96:29 -> 96:42 (count=0) - 96:42 -> 96:43 (count=0) - 96:46 -> 96:60 (count=0) - 96:60 -> 96:61 (count=0) - 96:61 -> 98:10 (count=0) - 98:10 -> 98:11 (count=0) - 99:9 -> 99:23 (count=0) - 101:9 -> 101:15 (count=0) - 103:1 -> 103:2 (count=1) -Segment at 4:9 (count = 1), RegionEntry -Segment at 4:26 (count = 0), Skipped -Segment at 5:8 (count = 1), RegionEntry -Segment at 5:12 (count = 0), Skipped -Segment at 5:13 (count = 1), RegionEntry -Segment at 7:6 (count = 0), Skipped -Segment at 10:9 (count = 1), RegionEntry -Segment at 10:10 (count = 0), Skipped -Segment at 10:16 (count = 1), RegionEntry -Segment at 10:29 (count = 0), Skipped -Segment at 11:9 (count = 1), RegionEntry -Segment at 12:10 (count = 0), Skipped -Segment at 13:15 (count = 0), RegionEntry -Segment at 13:28 (count = 0), Skipped -Segment at 14:12 (count = 0), RegionEntry -Segment at 14:25 (count = 0), Skipped -Segment at 14:29 (count = 0), RegionEntry -Segment at 14:42 (count = 0), RegionEntry -Segment at 14:43 (count = 0), Skipped -Segment at 14:46 (count = 0), RegionEntry -Segment at 14:60 (count = 0), RegionEntry -Segment at 14:61 (count = 0), RegionEntry -Segment at 16:10 (count = 0), RegionEntry -Segment at 16:11 (count = 0), Skipped -Segment at 17:9 (count = 0), RegionEntry -Segment at 18:18 (count = 0), Skipped -Segment at 20:9 (count = 0), RegionEntry -Segment at 20:15 (count = 0), Skipped -Segment at 23:9 (count = 1), RegionEntry -Segment at 23:26 (count = 0), Skipped -Segment at 24:8 (count = 1), RegionEntry -Segment at 24:12 (count = 0), Skipped -Segment at 24:13 (count = 1), RegionEntry -Segment at 26:6 (count = 0), Skipped -Segment at 28:8 (count = 1), RegionEntry -Segment at 28:21 (count = 0), Skipped -Segment at 28:22 (count = 1), RegionEntry -Segment at 30:6 (count = 0), Skipped -Segment at 30:15 (count = 0), RegionEntry -Segment at 30:28 (count = 0), Skipped -Segment at 31:12 (count = 0), RegionEntry -Segment at 31:25 (count = 0), Skipped -Segment at 31:29 (count = 0), RegionEntry -Segment at 31:42 (count = 0), RegionEntry -Segment at 31:43 (count = 0), Skipped -Segment at 31:46 (count = 0), RegionEntry -Segment at 31:60 (count = 0), RegionEntry -Segment at 31:61 (count = 0), RegionEntry -Segment at 33:10 (count = 0), RegionEntry -Segment at 33:11 (count = 0), Skipped -Segment at 34:9 (count = 0), RegionEntry -Segment at 34:23 (count = 0), Skipped -Segment at 36:9 (count = 0), RegionEntry -Segment at 36:15 (count = 0), Skipped -Segment at 39:8 (count = 1), RegionEntry -Segment at 39:12 (count = 0), Skipped -Segment at 52:13 (count = 1), RegionEntry -Segment at 52:30 (count = 0), Skipped -Segment at 53:12 (count = 1), RegionEntry -Segment at 53:16 (count = 0), Skipped -Segment at 53:17 (count = 1), RegionEntry -Segment at 55:10 (count = 0), Skipped -Segment at 57:12 (count = 1), RegionEntry -Segment at 57:25 (count = 0), Skipped -Segment at 57:26 (count = 1), RegionEntry -Segment at 59:10 (count = 0), Skipped -Segment at 65:17 (count = 0), RegionEntry -Segment at 65:30 (count = 0), Skipped -Segment at 66:16 (count = 0), RegionEntry -Segment at 66:29 (count = 0), Skipped -Segment at 66:33 (count = 0), RegionEntry -Segment at 66:46 (count = 0), RegionEntry -Segment at 66:47 (count = 0), Skipped -Segment at 66:50 (count = 0), RegionEntry -Segment at 66:64 (count = 0), RegionEntry -Segment at 66:65 (count = 0), RegionEntry -Segment at 68:14 (count = 0), RegionEntry -Segment at 68:15 (count = 0), Skipped -Segment at 69:13 (count = 0), RegionEntry -Segment at 69:27 (count = 0), Skipped -Segment at 71:13 (count = 0), RegionEntry -Segment at 71:19 (count = 0), Skipped -Segment at 73:6 (count = 1), RegionEntry -Segment at 73:7 (count = 0), Skipped -Segment at 75:9 (count = 1), RegionEntry -Segment at 75:26 (count = 0), Skipped -Segment at 76:8 (count = 1), RegionEntry -Segment at 76:12 (count = 0), Skipped -Segment at 76:13 (count = 1), RegionEntry -Segment at 78:6 (count = 0), Skipped -Segment at 80:9 (count = 0), RegionEntry -Segment at 80:10 (count = 0), Skipped -Segment at 80:16 (count = 1), RegionEntry -Segment at 80:29 (count = 0), Skipped -Segment at 80:30 (count = 0), RegionEntry -Segment at 82:6 (count = 0), Skipped -Segment at 82:15 (count = 1), RegionEntry -Segment at 82:28 (count = 0), Skipped -Segment at 83:12 (count = 0), RegionEntry -Segment at 83:25 (count = 0), Skipped -Segment at 83:29 (count = 0), RegionEntry -Segment at 83:42 (count = 0), RegionEntry -Segment at 83:43 (count = 0), Skipped -Segment at 83:46 (count = 0), RegionEntry -Segment at 83:60 (count = 0), RegionEntry -Segment at 83:61 (count = 0), RegionEntry -Segment at 85:10 (count = 0), RegionEntry -Segment at 85:11 (count = 0), Skipped -Segment at 86:9 (count = 0), RegionEntry -Segment at 86:23 (count = 0), Skipped -Segment at 88:13 (count = 1), RegionEntry -Segment at 90:15 (count = 0), Skipped -Segment at 93:9 (count = 0), RegionEntry -Segment at 93:10 (count = 0), Skipped -Segment at 93:16 (count = 0), RegionEntry -Segment at 93:29 (count = 0), Skipped -Segment at 93:30 (count = 0), RegionEntry -Segment at 95:6 (count = 0), Skipped -Segment at 95:15 (count = 0), RegionEntry -Segment at 95:28 (count = 0), Skipped -Segment at 96:12 (count = 0), RegionEntry -Segment at 96:25 (count = 0), Skipped -Segment at 96:29 (count = 0), RegionEntry -Segment at 96:42 (count = 0), RegionEntry -Segment at 96:43 (count = 0), Skipped -Segment at 96:46 (count = 0), RegionEntry -Segment at 96:60 (count = 0), RegionEntry -Segment at 96:61 (count = 0), RegionEntry -Segment at 98:10 (count = 0), RegionEntry -Segment at 98:11 (count = 0), Skipped -Segment at 99:9 (count = 0), RegionEntry -Segment at 99:23 (count = 0), Skipped -Segment at 101:9 (count = 0), RegionEntry -Segment at 101:15 (count = 0), Skipped -Segment at 103:1 (count = 1), RegionEntry -Segment at 103:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.drop_trait.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.drop_trait.txt deleted file mode 100644 index 375025fe8bc..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.drop_trait.txt +++ /dev/null @@ -1,22 +0,0 @@ -Counter in file 0 9:24 -> 11:6, #1 -Counter in file 0 15:9 -> 17:42, #1 -Counter in file 0 19:8 -> 19:12, (#1 + 0) -Counter in file 0 20:9 -> 21:22, #2 -Counter in file 0 27:1 -> 27:2, (#2 + 0) -Emitting segments for file: ../coverage/drop_trait.rs -Combined regions: - 9:24 -> 11:6 (count=2) - 15:9 -> 17:42 (count=1) - 19:8 -> 19:12 (count=1) - 20:9 -> 21:22 (count=1) - 27:1 -> 27:2 (count=1) -Segment at 9:24 (count = 2), RegionEntry -Segment at 11:6 (count = 0), Skipped -Segment at 15:9 (count = 1), RegionEntry -Segment at 17:42 (count = 0), Skipped -Segment at 19:8 (count = 1), RegionEntry -Segment at 19:12 (count = 0), Skipped -Segment at 20:9 (count = 1), RegionEntry -Segment at 21:22 (count = 0), Skipped -Segment at 27:1 (count = 1), RegionEntry -Segment at 27:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.generics.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.generics.txt deleted file mode 100644 index 013a69ed398..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.generics.txt +++ /dev/null @@ -1,48 +0,0 @@ -Counter in file 0 17:24 -> 19:6, #1 -Counter in file 0 17:24 -> 19:6, #1 -Counter in file 0 23:9 -> 28:28, #1 -Counter in file 0 30:8 -> 30:12, (#1 + 0) -Counter in file 0 31:9 -> 32:22, #2 -Counter in file 0 38:1 -> 38:2, (#2 + 0) -Counter in file 0 10:49 -> 12:6, #1 -Counter in file 0 10:49 -> 12:6, #1 -Emitting segments for file: ../coverage/generics.rs -Combined regions: - 10:49 -> 12:6 (count=3) - 17:24 -> 19:6 (count=2) - 23:9 -> 28:28 (count=1) - 30:8 -> 30:12 (count=1) - 31:9 -> 32:22 (count=1) - 38:1 -> 38:2 (count=1) -Segment at 10:49 (count = 3), RegionEntry -Segment at 12:6 (count = 0), Skipped -Segment at 17:24 (count = 2), RegionEntry -Segment at 19:6 (count = 0), Skipped -Segment at 23:9 (count = 1), RegionEntry -Segment at 28:28 (count = 0), Skipped -Segment at 30:8 (count = 1), RegionEntry -Segment at 30:12 (count = 0), Skipped -Segment at 31:9 (count = 1), RegionEntry -Segment at 32:22 (count = 0), Skipped -Segment at 38:1 (count = 1), RegionEntry -Segment at 38:2 (count = 0), Skipped -Emitting segments for function: _RNvMCs4fqI2P2rA04_8genericsINtB2_8FireworkdE12set_strengthB2_ -Combined regions: - 10:49 -> 12:6 (count=2) -Segment at 10:49 (count = 2), RegionEntry -Segment at 12:6 (count = 0), Skipped -Emitting segments for function: _RNvMCs4fqI2P2rA04_8genericsINtB2_8FireworklE12set_strengthB2_ -Combined regions: - 10:49 -> 12:6 (count=1) -Segment at 10:49 (count = 1), RegionEntry -Segment at 12:6 (count = 0), Skipped -Emitting segments for function: _RNvXs_Cs4fqI2P2rA04_8genericsINtB4_8FireworklENtNtNtCs7f2nZg1zwMz_4core3ops4drop4Drop4dropB4_ -Combined regions: - 17:24 -> 19:6 (count=1) -Segment at 17:24 (count = 1), RegionEntry -Segment at 19:6 (count = 0), Skipped -Emitting segments for function: _RNvXs_Cs4fqI2P2rA04_8genericsINtB4_8FireworkdENtNtNtCs7f2nZg1zwMz_4core3ops4drop4Drop4dropB4_ -Combined regions: - 17:24 -> 19:6 (count=1) -Segment at 17:24 (count = 1), RegionEntry -Segment at 19:6 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.if.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.if.txt deleted file mode 100644 index c2bef365ea9..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.if.txt +++ /dev/null @@ -1,21 +0,0 @@ -Counter in file 0 8:5 -> 18:10, #1 -Counter in file 0 21:9 -> 21:16, (#1 + 0) -Counter in file 0 22:5 -> 27:6, #2 -Counter in file 0 27:6 -> 27:7, (#1 - #2) -Counter in file 0 28:1 -> 28:2, (#2 + (#1 - #2)) -Emitting segments for file: ../coverage/if.rs -Combined regions: - 8:5 -> 18:10 (count=1) - 21:9 -> 21:16 (count=1) - 22:5 -> 27:6 (count=1) - 27:6 -> 27:7 (count=0) - 28:1 -> 28:2 (count=1) -Segment at 8:5 (count = 1), RegionEntry -Segment at 18:10 (count = 0), Skipped -Segment at 21:9 (count = 1), RegionEntry -Segment at 21:16 (count = 0), Skipped -Segment at 22:5 (count = 1), RegionEntry -Segment at 27:6 (count = 0), RegionEntry -Segment at 27:7 (count = 0), Skipped -Segment at 28:1 (count = 1), RegionEntry -Segment at 28:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.if_else.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.if_else.txt deleted file mode 100644 index faf5c094bba..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.if_else.txt +++ /dev/null @@ -1,30 +0,0 @@ -Counter in file 0 7:9 -> 11:16, #1 -Counter in file 0 12:5 -> 17:6, #2 -Counter in file 0 20:9 -> 22:16, (#1 - #2) -Counter in file 0 26:9 -> 26:16, (#2 + (#1 - #2)) -Counter in file 0 27:5 -> 32:6, #3 -Counter in file 0 34:5 -> 39:6, ((#2 + (#1 - #2)) - #3) -Counter in file 0 40:1 -> 40:2, (#3 + ((#2 + (#1 - #2)) - #3)) -Emitting segments for file: ../coverage/if_else.rs -Combined regions: - 7:9 -> 11:16 (count=1) - 12:5 -> 17:6 (count=1) - 20:9 -> 22:16 (count=0) - 26:9 -> 26:16 (count=1) - 27:5 -> 32:6 (count=1) - 34:5 -> 39:6 (count=0) - 40:1 -> 40:2 (count=1) -Segment at 7:9 (count = 1), RegionEntry -Segment at 11:16 (count = 0), Skipped -Segment at 12:5 (count = 1), RegionEntry -Segment at 17:6 (count = 0), Skipped -Segment at 20:9 (count = 0), RegionEntry -Segment at 22:16 (count = 0), Skipped -Segment at 26:9 (count = 1), RegionEntry -Segment at 26:16 (count = 0), Skipped -Segment at 27:5 (count = 1), RegionEntry -Segment at 32:6 (count = 0), Skipped -Segment at 34:5 (count = 0), RegionEntry -Segment at 39:6 (count = 0), Skipped -Segment at 40:1 (count = 1), RegionEntry -Segment at 40:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.inner_items.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.inner_items.txt deleted file mode 100644 index e4dfae76817..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.inner_items.txt +++ /dev/null @@ -1,44 +0,0 @@ -Counter in file 0 19:13 -> 22:6, #1 -Counter in file 0 7:9 -> 9:26, #1 -Counter in file 0 10:8 -> 10:15, (#1 + 0) -Counter in file 0 10:16 -> 12:6, #2 -Counter in file 0 12:6 -> 12:7, (#1 - #2) -Counter in file 0 48:8 -> 48:15, (#2 + (#1 - #2)) -Counter in file 0 48:16 -> 50:6, #3 -Counter in file 0 50:6 -> 50:7, ((#2 + (#1 - #2)) - #3) -Counter in file 0 52:9 -> 57:2, (#3 + ((#2 + (#1 - #2)) - #3)) -Counter in file 0 33:42 -> 36:10, #1 -Counter in file 0 40:45 -> 43:10, #1 -Emitting segments for file: ../coverage/inner_items.rs -Combined regions: - 7:9 -> 9:26 (count=1) - 10:8 -> 10:15 (count=1) - 10:16 -> 12:6 (count=1) - 12:6 -> 12:7 (count=0) - 19:13 -> 22:6 (count=3) - 33:42 -> 36:10 (count=1) - 40:45 -> 43:10 (count=1) - 48:8 -> 48:15 (count=1) - 48:16 -> 50:6 (count=1) - 50:6 -> 50:7 (count=0) - 52:9 -> 57:2 (count=1) -Segment at 7:9 (count = 1), RegionEntry -Segment at 9:26 (count = 0), Skipped -Segment at 10:8 (count = 1), RegionEntry -Segment at 10:15 (count = 0), Skipped -Segment at 10:16 (count = 1), RegionEntry -Segment at 12:6 (count = 0), RegionEntry -Segment at 12:7 (count = 0), Skipped -Segment at 19:13 (count = 3), RegionEntry -Segment at 22:6 (count = 0), Skipped -Segment at 33:42 (count = 1), RegionEntry -Segment at 36:10 (count = 0), Skipped -Segment at 40:45 (count = 1), RegionEntry -Segment at 43:10 (count = 0), Skipped -Segment at 48:8 (count = 1), RegionEntry -Segment at 48:15 (count = 0), Skipped -Segment at 48:16 (count = 1), RegionEntry -Segment at 50:6 (count = 0), RegionEntry -Segment at 50:7 (count = 0), Skipped -Segment at 52:9 (count = 1), RegionEntry -Segment at 57:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.lazy_boolean.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.lazy_boolean.txt deleted file mode 100644 index 8e56d79d9d2..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.lazy_boolean.txt +++ /dev/null @@ -1,131 +0,0 @@ -Counter in file 0 7:9 -> 9:42, #1 -Counter in file 0 10:8 -> 10:15, (#1 + 0) -Counter in file 0 10:16 -> 14:6, #2 -Counter in file 0 14:6 -> 14:7, (#1 - #2) -Counter in file 0 16:9 -> 16:17, ((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) -Counter in file 0 18:13 -> 18:18, (#2 + (#1 - #2)) -Counter in file 0 20:13 -> 20:18, ((#2 + (#1 - #2)) - #3) -Counter in file 0 20:18 -> 20:19, (#3 + #4) -Counter in file 0 20:18 -> 20:19, (((#2 + (#1 - #2)) - #3) - #4) -Counter in file 0 23:9 -> 23:17, ((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) -Counter in file 0 25:13 -> 25:18, (((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) + 0) -Counter in file 0 27:13 -> 27:18, (((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) -Counter in file 0 27:18 -> 27:19, (#5 + #6) -Counter in file 0 27:18 -> 27:19, ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6) -Counter in file 0 29:9 -> 29:17, ((#7 - #8) + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + #8)) -Counter in file 0 29:20 -> 29:25, (((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) + 0) -Counter in file 0 29:29 -> 29:34, #7 -Counter in file 0 29:34 -> 29:35, ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + #8) -Counter in file 0 29:34 -> 29:35, (#7 - #8) -Counter in file 0 30:9 -> 30:17, ((#9 - #10) + ((((#7 - #8) + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + #8)) - #9) + #10)) -Counter in file 0 30:20 -> 30:25, (((#7 - #8) + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + #8)) + 0) -Counter in file 0 30:29 -> 30:34, #9 -Counter in file 0 30:34 -> 30:35, ((((#7 - #8) + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + #8)) - #9) + #10) -Counter in file 0 30:34 -> 30:35, (#9 - #10) -Counter in file 0 33:9 -> 34:16, (((#9 - #10) + ((((#7 - #8) + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + #8)) - #9) + #10)) + 0) -Counter in file 0 35:5 -> 38:6, #11 -Counter in file 0 38:6 -> 38:7, (((#9 - #10) + ((((#7 - #8) + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + #8)) - #9) + #10)) - #11) -Counter in file 0 41:9 -> 41:16, (#11 + (((#9 - #10) + ((((#7 - #8) + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + #8)) - #9) + #10)) - #11)) -Counter in file 0 42:5 -> 45:6, #12 -Counter in file 0 47:5 -> 50:6, ((#11 + (((#9 - #10) + ((((#7 - #8) + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + #8)) - #9) + #10)) - #11)) - #12) -Counter in file 0 52:8 -> 52:16, (#12 + ((#11 + (((#9 - #10) + ((((#7 - #8) + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + #8)) - #9) + #10)) - #11)) - #12)) -Counter in file 0 52:17 -> 54:6, #13 -Counter in file 0 54:6 -> 54:7, ((#12 + ((#11 + (((#9 - #10) + ((((#7 - #8) + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + #8)) - #9) + #10)) - #11)) - #12)) - #13) -Counter in file 0 56:8 -> 56:15, (#13 + ((#12 + ((#11 + (((#9 - #10) + ((((#7 - #8) + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + #8)) - #9) + #10)) - #11)) - #12)) - #13)) -Counter in file 0 56:16 -> 58:6, #14 -Counter in file 0 58:12 -> 60:6, ((#13 + ((#12 + ((#11 + (((#9 - #10) + ((((#7 - #8) + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + #8)) - #9) + #10)) - #11)) - #12)) - #13)) - #14) -Counter in file 0 61:1 -> 61:2, (#14 + ((#13 + ((#12 + ((#11 + (((#9 - #10) + ((((#7 - #8) + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + #8)) - #9) + #10)) - #11)) - #12)) - #13)) - #14)) -Emitting segments for file: ../coverage/lazy_boolean.rs -Combined regions: - 7:9 -> 9:42 (count=1) - 10:8 -> 10:15 (count=1) - 10:16 -> 14:6 (count=1) - 14:6 -> 14:7 (count=0) - 16:9 -> 16:17 (count=1) - 18:13 -> 18:18 (count=1) - 20:13 -> 20:18 (count=0) - 20:18 -> 20:19 (count=1) - 23:9 -> 23:17 (count=1) - 25:13 -> 25:18 (count=1) - 27:13 -> 27:18 (count=1) - 27:18 -> 27:19 (count=1) - 29:9 -> 29:17 (count=1) - 29:20 -> 29:25 (count=1) - 29:29 -> 29:34 (count=1) - 29:34 -> 29:35 (count=1) - 30:9 -> 30:17 (count=1) - 30:20 -> 30:25 (count=1) - 30:29 -> 30:34 (count=0) - 30:34 -> 30:35 (count=1) - 33:9 -> 34:16 (count=1) - 35:5 -> 38:6 (count=0) - 38:6 -> 38:7 (count=1) - 41:9 -> 41:16 (count=1) - 42:5 -> 45:6 (count=1) - 47:5 -> 50:6 (count=0) - 52:8 -> 52:16 (count=1) - 52:17 -> 54:6 (count=0) - 54:6 -> 54:7 (count=1) - 56:8 -> 56:15 (count=1) - 56:16 -> 58:6 (count=1) - 58:12 -> 60:6 (count=0) - 61:1 -> 61:2 (count=1) -Segment at 7:9 (count = 1), RegionEntry -Segment at 9:42 (count = 0), Skipped -Segment at 10:8 (count = 1), RegionEntry -Segment at 10:15 (count = 0), Skipped -Segment at 10:16 (count = 1), RegionEntry -Segment at 14:6 (count = 0), RegionEntry -Segment at 14:7 (count = 0), Skipped -Segment at 16:9 (count = 1), RegionEntry -Segment at 16:17 (count = 0), Skipped -Segment at 18:13 (count = 1), RegionEntry -Segment at 18:18 (count = 0), Skipped -Segment at 20:13 (count = 0), RegionEntry -Segment at 20:18 (count = 1), RegionEntry -Segment at 20:19 (count = 0), Skipped -Segment at 23:9 (count = 1), RegionEntry -Segment at 23:17 (count = 0), Skipped -Segment at 25:13 (count = 1), RegionEntry -Segment at 25:18 (count = 0), Skipped -Segment at 27:13 (count = 1), RegionEntry -Segment at 27:18 (count = 1), RegionEntry -Segment at 27:19 (count = 0), Skipped -Segment at 29:9 (count = 1), RegionEntry -Segment at 29:17 (count = 0), Skipped -Segment at 29:20 (count = 1), RegionEntry -Segment at 29:25 (count = 0), Skipped -Segment at 29:29 (count = 1), RegionEntry -Segment at 29:34 (count = 1), RegionEntry -Segment at 29:35 (count = 0), Skipped -Segment at 30:9 (count = 1), RegionEntry -Segment at 30:17 (count = 0), Skipped -Segment at 30:20 (count = 1), RegionEntry -Segment at 30:25 (count = 0), Skipped -Segment at 30:29 (count = 0), RegionEntry -Segment at 30:34 (count = 1), RegionEntry -Segment at 30:35 (count = 0), Skipped -Segment at 33:9 (count = 1), RegionEntry -Segment at 34:16 (count = 0), Skipped -Segment at 35:5 (count = 0), RegionEntry -Segment at 38:6 (count = 1), RegionEntry -Segment at 38:7 (count = 0), Skipped -Segment at 41:9 (count = 1), RegionEntry -Segment at 41:16 (count = 0), Skipped -Segment at 42:5 (count = 1), RegionEntry -Segment at 45:6 (count = 0), Skipped -Segment at 47:5 (count = 0), RegionEntry -Segment at 50:6 (count = 0), Skipped -Segment at 52:8 (count = 1), RegionEntry -Segment at 52:16 (count = 0), Skipped -Segment at 52:17 (count = 0), RegionEntry -Segment at 54:6 (count = 1), RegionEntry -Segment at 54:7 (count = 0), Skipped -Segment at 56:8 (count = 1), RegionEntry -Segment at 56:15 (count = 0), Skipped -Segment at 56:16 (count = 1), RegionEntry -Segment at 58:6 (count = 0), Skipped -Segment at 58:12 (count = 0), RegionEntry -Segment at 60:6 (count = 0), Skipped -Segment at 61:1 (count = 1), RegionEntry -Segment at 61:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.loop_break_value.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.loop_break_value.txt deleted file mode 100644 index a6144b8072a..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.loop_break_value.txt +++ /dev/null @@ -1,6 +0,0 @@ -Counter in file 0 3:11 -> 13:2, #1 -Emitting segments for file: ../coverage/loop_break_value.rs -Combined regions: - 3:11 -> 13:2 (count=1) -Segment at 3:11 (count = 1), RegionEntry -Segment at 13:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.loops_branches.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.loops_branches.txt deleted file mode 100644 index d8af6998964..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.loops_branches.txt +++ /dev/null @@ -1,37 +0,0 @@ -Counter in file 0 10:12 -> 10:16, #1 -Counter in file 0 11:16 -> 11:21, #2 -Counter in file 0 14:14 -> 14:15, (#2 - #5) -Counter in file 0 15:13 -> 15:31, (0 + (#2 - #5)) -Counter in file 0 15:31 -> 15:32, #4 -Counter in file 0 17:10 -> 17:11, #3 -Counter in file 0 18:9 -> 18:15, (#3 + 0) -Counter in file 0 19:5 -> 19:6, (#4 + (#3 + 0)) -Counter in file 0 22:11 -> 25:2, #1 -Emitting segments for file: ../coverage/loops_branches.rs -Combined regions: - 10:12 -> 10:16 (count=1) - 11:16 -> 11:21 (count=1) - 14:14 -> 14:15 (count=1) - 15:13 -> 15:31 (count=1) - 15:31 -> 15:32 (count=0) - 17:10 -> 17:11 (count=1) - 18:9 -> 18:15 (count=1) - 19:5 -> 19:6 (count=1) - 22:11 -> 25:2 (count=1) -Segment at 10:12 (count = 1), RegionEntry -Segment at 10:16 (count = 0), Skipped -Segment at 11:16 (count = 1), RegionEntry -Segment at 11:21 (count = 0), Skipped -Segment at 14:14 (count = 1), RegionEntry -Segment at 14:15 (count = 0), Skipped -Segment at 15:13 (count = 1), RegionEntry -Segment at 15:31 (count = 0), RegionEntry -Segment at 15:32 (count = 0), Skipped -Segment at 17:10 (count = 1), RegionEntry -Segment at 17:11 (count = 0), Skipped -Segment at 18:9 (count = 1), RegionEntry -Segment at 18:15 (count = 0), Skipped -Segment at 19:5 (count = 1), RegionEntry -Segment at 19:6 (count = 0), Skipped -Segment at 22:11 (count = 1), RegionEntry -Segment at 25:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.nested_loops.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.nested_loops.txt deleted file mode 100644 index f8e504c56c4..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.nested_loops.txt +++ /dev/null @@ -1,69 +0,0 @@ -Counter in file 0 2:9 -> 3:27, #1 -Counter in file 0 5:19 -> 5:32, (#1 + (#2 + #3)) -Counter in file 0 6:13 -> 7:24, ((#1 + (#2 + #3)) - #4) -Counter in file 0 8:13 -> 8:14, ((((#1 + (#2 + #3)) - #4) + (#6 + #7)) - #3) -Counter in file 0 8:18 -> 8:23, (((#1 + (#2 + #3)) - #4) + (#6 + #7)) -Counter in file 0 9:16 -> 9:22, (((((#1 + (#2 + #3)) - #4) + (#6 + #7)) - #3) + 0) -Counter in file 0 10:17 -> 10:22, #2 -Counter in file 0 12:13 -> 13:19, (((((#1 + (#2 + #3)) - #4) + (#6 + #7)) - #3) - #2) -Counter in file 0 14:16 -> 14:22, ((((((#1 + (#2 + #3)) - #4) + (#6 + #7)) - #3) - #2) + 0) -Counter in file 0 15:17 -> 16:27, ((((((#1 + (#2 + #3)) - #4) + (#6 + #7)) - #3) - #2) - #7) -Counter in file 0 17:21 -> 17:33, #5 -Counter in file 0 18:24 -> 21:14, #6 -Counter in file 0 21:14 -> 21:15, #7 -Counter in file 0 22:10 -> 22:11, (#6 + #7) -Counter in file 0 23:9 -> 23:23, (#2 + #3) -Counter in file 0 24:6 -> 24:7, #4 -Counter in file 0 25:1 -> 25:2, (#5 + #4) -Emitting segments for file: ../coverage/nested_loops.rs -Combined regions: - 2:9 -> 3:27 (count=1) - 5:19 -> 5:32 (count=1) - 6:13 -> 7:24 (count=1) - 8:13 -> 8:14 (count=3) - 8:18 -> 8:23 (count=3) - 9:16 -> 9:22 (count=3) - 10:17 -> 10:22 (count=0) - 12:13 -> 13:19 (count=3) - 14:16 -> 14:22 (count=3) - 15:17 -> 16:27 (count=1) - 17:21 -> 17:33 (count=1) - 18:24 -> 21:14 (count=0) - 21:14 -> 21:15 (count=2) - 22:10 -> 22:11 (count=2) - 23:9 -> 23:23 (count=0) - 24:6 -> 24:7 (count=0) - 25:1 -> 25:2 (count=1) -Segment at 2:9 (count = 1), RegionEntry -Segment at 3:27 (count = 0), Skipped -Segment at 5:19 (count = 1), RegionEntry -Segment at 5:32 (count = 0), Skipped -Segment at 6:13 (count = 1), RegionEntry -Segment at 7:24 (count = 0), Skipped -Segment at 8:13 (count = 3), RegionEntry -Segment at 8:14 (count = 0), Skipped -Segment at 8:18 (count = 3), RegionEntry -Segment at 8:23 (count = 0), Skipped -Segment at 9:16 (count = 3), RegionEntry -Segment at 9:22 (count = 0), Skipped -Segment at 10:17 (count = 0), RegionEntry -Segment at 10:22 (count = 0), Skipped -Segment at 12:13 (count = 3), RegionEntry -Segment at 13:19 (count = 0), Skipped -Segment at 14:16 (count = 3), RegionEntry -Segment at 14:22 (count = 0), Skipped -Segment at 15:17 (count = 1), RegionEntry -Segment at 16:27 (count = 0), Skipped -Segment at 17:21 (count = 1), RegionEntry -Segment at 17:33 (count = 0), Skipped -Segment at 18:24 (count = 0), RegionEntry -Segment at 21:14 (count = 2), RegionEntry -Segment at 21:15 (count = 0), Skipped -Segment at 22:10 (count = 2), RegionEntry -Segment at 22:11 (count = 0), Skipped -Segment at 23:9 (count = 0), RegionEntry -Segment at 23:23 (count = 0), Skipped -Segment at 24:6 (count = 0), RegionEntry -Segment at 24:7 (count = 0), Skipped -Segment at 25:1 (count = 1), RegionEntry -Segment at 25:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.overflow.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.overflow.txt deleted file mode 100644 index 8696e102b56..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.overflow.txt +++ /dev/null @@ -1,53 +0,0 @@ -Counter in file 0 16:9 -> 16:27, #1 -Counter in file 0 17:11 -> 17:24, (#1 + (#2 + (#3 + #4))) -Counter in file 0 18:12 -> 18:26, ((#1 + (#2 + (#3 + #4))) - #5) -Counter in file 0 18:27 -> 21:10, #2 -Counter in file 0 21:19 -> 21:32, (((#1 + (#2 + (#3 + #4))) - #5) - #2) -Counter in file 0 21:33 -> 24:10, #3 -Counter in file 0 24:10 -> 24:11, #4 -Counter in file 0 24:10 -> 24:11, (#3 + #4) -Counter in file 0 25:9 -> 25:23, (#2 + (#3 + #4)) -Counter in file 0 27:5 -> 28:2, #5 -Counter in file 0 5:8 -> 5:18, #1 -Counter in file 0 5:19 -> 7:6, #2 -Counter in file 0 7:6 -> 7:7, (#1 - #2) -Counter in file 0 8:9 -> 13:2, (#2 + (#1 - #2)) -Emitting segments for file: ../coverage/overflow.rs -Combined regions: - 5:8 -> 5:18 (count=4) - 5:19 -> 7:6 (count=1) - 7:6 -> 7:7 (count=3) - 8:9 -> 13:2 (count=4) - 16:9 -> 16:27 (count=1) - 17:11 -> 17:24 (count=10) - 18:12 -> 18:26 (count=10) - 18:27 -> 21:10 (count=0) - 21:19 -> 21:32 (count=10) - 21:33 -> 24:10 (count=3) - 24:10 -> 24:11 (count=15) - 25:9 -> 25:23 (count=9) - 27:5 -> 28:2 (count=0) -Segment at 5:8 (count = 4), RegionEntry -Segment at 5:18 (count = 0), Skipped -Segment at 5:19 (count = 1), RegionEntry -Segment at 7:6 (count = 3), RegionEntry -Segment at 7:7 (count = 0), Skipped -Segment at 8:9 (count = 4), RegionEntry -Segment at 13:2 (count = 0), Skipped -Segment at 16:9 (count = 1), RegionEntry -Segment at 16:27 (count = 0), Skipped -Segment at 17:11 (count = 10), RegionEntry -Segment at 17:24 (count = 0), Skipped -Segment at 18:12 (count = 10), RegionEntry -Segment at 18:26 (count = 0), Skipped -Segment at 18:27 (count = 0), RegionEntry -Segment at 21:10 (count = 0), Skipped -Segment at 21:19 (count = 10), RegionEntry -Segment at 21:32 (count = 0), Skipped -Segment at 21:33 (count = 3), RegionEntry -Segment at 24:10 (count = 15), RegionEntry -Segment at 24:11 (count = 0), Skipped -Segment at 25:9 (count = 9), RegionEntry -Segment at 25:23 (count = 0), Skipped -Segment at 27:5 (count = 0), RegionEntry -Segment at 28:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.panic_unwind.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.panic_unwind.txt deleted file mode 100644 index 9602ff1a985..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.panic_unwind.txt +++ /dev/null @@ -1,50 +0,0 @@ -Counter in file 0 14:9 -> 14:27, #1 -Counter in file 0 15:11 -> 15:24, (#1 + (#2 + (#3 + #4))) -Counter in file 0 16:12 -> 16:26, ((#1 + (#2 + (#3 + #4))) - #5) -Counter in file 0 16:27 -> 18:10, #2 -Counter in file 0 18:19 -> 18:32, (((#1 + (#2 + (#3 + #4))) - #5) - #2) -Counter in file 0 18:33 -> 20:10, #3 -Counter in file 0 20:10 -> 20:11, #4 -Counter in file 0 20:10 -> 20:11, (#3 + #4) -Counter in file 0 21:9 -> 21:23, (#2 + (#3 + #4)) -Counter in file 0 23:5 -> 24:2, #5 -Counter in file 0 5:8 -> 5:20, #1 -Counter in file 0 6:9 -> 7:26, #2 -Counter in file 0 8:12 -> 11:2, (#1 - #2) -Emitting segments for file: ../coverage/panic_unwind.rs -Combined regions: - 5:8 -> 5:20 (count=4) - 6:9 -> 7:26 (count=1) - 8:12 -> 11:2 (count=3) - 14:9 -> 14:27 (count=1) - 15:11 -> 15:24 (count=10) - 16:12 -> 16:26 (count=10) - 16:27 -> 18:10 (count=0) - 18:19 -> 18:32 (count=10) - 18:33 -> 20:10 (count=3) - 20:10 -> 20:11 (count=15) - 21:9 -> 21:23 (count=9) - 23:5 -> 24:2 (count=0) -Segment at 5:8 (count = 4), RegionEntry -Segment at 5:20 (count = 0), Skipped -Segment at 6:9 (count = 1), RegionEntry -Segment at 7:26 (count = 0), Skipped -Segment at 8:12 (count = 3), RegionEntry -Segment at 11:2 (count = 0), Skipped -Segment at 14:9 (count = 1), RegionEntry -Segment at 14:27 (count = 0), Skipped -Segment at 15:11 (count = 10), RegionEntry -Segment at 15:24 (count = 0), Skipped -Segment at 16:12 (count = 10), RegionEntry -Segment at 16:26 (count = 0), Skipped -Segment at 16:27 (count = 0), RegionEntry -Segment at 18:10 (count = 0), Skipped -Segment at 18:19 (count = 10), RegionEntry -Segment at 18:32 (count = 0), Skipped -Segment at 18:33 (count = 3), RegionEntry -Segment at 20:10 (count = 15), RegionEntry -Segment at 20:11 (count = 0), Skipped -Segment at 21:9 (count = 9), RegionEntry -Segment at 21:23 (count = 0), Skipped -Segment at 23:5 (count = 0), RegionEntry -Segment at 24:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.partial_eq.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.partial_eq.txt deleted file mode 100644 index 329e0f3889a..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.partial_eq.txt +++ /dev/null @@ -1,53 +0,0 @@ -Counter in file 0 4:48 -> 4:49, ((#1 + #2) + ((#3 + #4) + ((#5 + #6) + #7))) -Counter in file 0 7:5 -> 7:6, #1 -Counter in file 0 21:11 -> 26:2, #1 -Counter in file 0 4:39 -> 4:40, #1 -Counter in file 0 4:48 -> 4:49, (#1 + 0) -Counter in file 0 7:5 -> 7:6, #1 -Counter in file 0 4:39 -> 4:40, #1 -Counter in file 0 4:48 -> 4:49, (#1 + 0) -Counter in file 0 4:32 -> 4:33, ((#4 + #5) + #6) -Counter in file 0 7:5 -> 7:6, #1 -Counter in file 0 4:53 -> 4:54, (#1 + (#2 + (#3 + #4))) -Counter in file 0 8:5 -> 8:17, #1 -Counter in file 0 13:9 -> 18:6, #1 -Counter in file 0 7:5 -> 7:6, #1 -Counter in file 0 4:39 -> 4:40, #1 -Counter in file 0 4:48 -> 4:49, (#1 + 0) -Counter in file 0 4:10 -> 4:15, #1 -Counter in file 0 8:5 -> 8:17, #1 -Counter in file 0 4:35 -> 4:37, #1 -Counter in file 0 8:5 -> 8:17, #1 -Counter in file 0 8:5 -> 8:17, #1 -Counter in file 0 4:17 -> 4:22, #1 -Counter in file 0 4:39 -> 4:40, #1 -Counter in file 0 4:48 -> 4:49, (#1 + 0) -Counter in file 0 4:32 -> 4:33, (#3 + (#1 + #2)) -Emitting segments for file: ../coverage/partial_eq.rs -Combined regions: - 4:17 -> 4:22 (count=2) - 4:39 -> 4:40 (count=1) - 4:48 -> 4:49 (count=1) - 7:5 -> 7:6 (count=1) - 13:9 -> 18:6 (count=2) - 21:11 -> 26:2 (count=1) -Segment at 4:17 (count = 2), RegionEntry -Segment at 4:22 (count = 0), Skipped -Segment at 4:39 (count = 1), RegionEntry -Segment at 4:40 (count = 0), Skipped -Segment at 4:48 (count = 1), RegionEntry -Segment at 4:49 (count = 0), Skipped -Segment at 7:5 (count = 1), RegionEntry -Segment at 7:6 (count = 0), Skipped -Segment at 13:9 (count = 2), RegionEntry -Segment at 18:6 (count = 0), Skipped -Segment at 21:11 (count = 1), RegionEntry -Segment at 26:2 (count = 0), Skipped -Emitting segments for function: _RNvXs0_Cs4fqI2P2rA04_10partial_eqNtB5_7VersionNtNtCs7f2nZg1zwMz_4core3cmp10PartialOrd2ltB5_ -Combined regions: - 4:39 -> 4:40 (count=1) - 4:48 -> 4:49 (count=1) -Segment at 4:39 (count = 1), RegionEntry -Segment at 4:40 (count = 0), Skipped -Segment at 4:48 (count = 1), RegionEntry -Segment at 4:49 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.simple_loop.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.simple_loop.txt deleted file mode 100644 index 6ea09248d65..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.simple_loop.txt +++ /dev/null @@ -1,37 +0,0 @@ -Counter in file 0 7:9 -> 9:26, #1 -Counter in file 0 12:9 -> 12:16, (#1 + 0) -Counter in file 0 13:5 -> 18:6, #2 -Counter in file 0 18:6 -> 18:7, (#1 - #2) -Counter in file 0 23:13 -> 25:14, ((#2 + (#1 - #2)) + #3) -Counter in file 0 27:13 -> 27:18, (((#2 + (#1 - #2)) + #3) - #3) -Counter in file 0 30:9 -> 32:10, #3 -Counter in file 0 34:6 -> 34:7, (#2 + (#1 - #2)) -Counter in file 0 35:1 -> 35:2, ((((#2 + (#1 - #2)) + #3) - #3) + 0) -Emitting segments for file: ../coverage/simple_loop.rs -Combined regions: - 7:9 -> 9:26 (count=1) - 12:9 -> 12:16 (count=1) - 13:5 -> 18:6 (count=1) - 18:6 -> 18:7 (count=0) - 23:13 -> 25:14 (count=11) - 27:13 -> 27:18 (count=1) - 30:9 -> 32:10 (count=10) - 34:6 -> 34:7 (count=1) - 35:1 -> 35:2 (count=1) -Segment at 7:9 (count = 1), RegionEntry -Segment at 9:26 (count = 0), Skipped -Segment at 12:9 (count = 1), RegionEntry -Segment at 12:16 (count = 0), Skipped -Segment at 13:5 (count = 1), RegionEntry -Segment at 18:6 (count = 0), RegionEntry -Segment at 18:7 (count = 0), Skipped -Segment at 23:13 (count = 11), RegionEntry -Segment at 25:14 (count = 0), Skipped -Segment at 27:13 (count = 1), RegionEntry -Segment at 27:18 (count = 0), Skipped -Segment at 30:9 (count = 10), RegionEntry -Segment at 32:10 (count = 0), Skipped -Segment at 34:6 (count = 1), RegionEntry -Segment at 34:7 (count = 0), Skipped -Segment at 35:1 (count = 1), RegionEntry -Segment at 35:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.simple_match.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.simple_match.txt deleted file mode 100644 index 1682a379bc0..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.simple_match.txt +++ /dev/null @@ -1,57 +0,0 @@ -Counter in file 0 7:9 -> 9:26, #1 -Counter in file 0 10:8 -> 10:15, (#1 + 0) -Counter in file 0 10:16 -> 12:6, #2 -Counter in file 0 12:6 -> 12:7, (#1 - #2) -Counter in file 0 15:9 -> 15:10, (((#2 + (#1 - #2)) + (#3 + #4)) - #5) -Counter in file 0 17:9 -> 17:13, ((#2 + (#1 - #2)) + (#3 + #4)) -Counter in file 0 22:13 -> 22:22, ((((#2 + (#1 - #2)) + (#3 + #4)) - #5) + 0) -Counter in file 0 24:13 -> 24:14, #3 -Counter in file 0 26:17 -> 28:18, ((((#2 + (#1 - #2)) + (#3 + #4)) - #5) + 0) -Counter in file 0 28:18 -> 28:19, ((((#2 + (#1 - #2)) + (#3 + #4)) - #5) - #3) -Counter in file 0 30:13 -> 37:14, (#3 + 0) -Counter in file 0 40:13 -> 40:15, #4 -Counter in file 0 42:6 -> 42:7, (#2 + (#1 - #2)) -Counter in file 0 42:6 -> 42:7, (#3 + #4) -Counter in file 0 43:1 -> 43:2, #5 -Emitting segments for file: ../coverage/simple_match.rs -Combined regions: - 7:9 -> 9:26 (count=1) - 10:8 -> 10:15 (count=1) - 10:16 -> 12:6 (count=1) - 12:6 -> 12:7 (count=0) - 15:9 -> 15:10 (count=2) - 17:9 -> 17:13 (count=3) - 22:13 -> 22:22 (count=2) - 24:13 -> 24:14 (count=1) - 26:17 -> 28:18 (count=2) - 28:18 -> 28:19 (count=1) - 30:13 -> 37:14 (count=1) - 40:13 -> 40:15 (count=1) - 42:6 -> 42:7 (count=3) - 43:1 -> 43:2 (count=1) -Segment at 7:9 (count = 1), RegionEntry -Segment at 9:26 (count = 0), Skipped -Segment at 10:8 (count = 1), RegionEntry -Segment at 10:15 (count = 0), Skipped -Segment at 10:16 (count = 1), RegionEntry -Segment at 12:6 (count = 0), RegionEntry -Segment at 12:7 (count = 0), Skipped -Segment at 15:9 (count = 2), RegionEntry -Segment at 15:10 (count = 0), Skipped -Segment at 17:9 (count = 3), RegionEntry -Segment at 17:13 (count = 0), Skipped -Segment at 22:13 (count = 2), RegionEntry -Segment at 22:22 (count = 0), Skipped -Segment at 24:13 (count = 1), RegionEntry -Segment at 24:14 (count = 0), Skipped -Segment at 26:17 (count = 2), RegionEntry -Segment at 28:18 (count = 1), RegionEntry -Segment at 28:19 (count = 0), Skipped -Segment at 30:13 (count = 1), RegionEntry -Segment at 37:14 (count = 0), Skipped -Segment at 40:13 (count = 1), RegionEntry -Segment at 40:15 (count = 0), Skipped -Segment at 42:6 (count = 3), RegionEntry -Segment at 42:7 (count = 0), Skipped -Segment at 43:1 (count = 1), RegionEntry -Segment at 43:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.tight_inf_loop.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.tight_inf_loop.txt deleted file mode 100644 index 5887658fe67..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.tight_inf_loop.txt +++ /dev/null @@ -1,10 +0,0 @@ -Counter in file 0 2:8 -> 2:13, #1 -Counter in file 0 5:1 -> 5:2, (#1 - #2) -Emitting segments for file: ../coverage/tight_inf_loop.rs -Combined regions: - 2:8 -> 2:13 (count=1) - 5:1 -> 5:2 (count=1) -Segment at 2:8 (count = 1), RegionEntry -Segment at 2:13 (count = 0), Skipped -Segment at 5:1 (count = 1), RegionEntry -Segment at 5:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.try_error_result.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.try_error_result.txt deleted file mode 100644 index 5b7f5496af8..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.try_error_result.txt +++ /dev/null @@ -1,72 +0,0 @@ -Counter in file 0 13:9 -> 14:23, #1 -Counter in file 0 17:9 -> 17:10, ((#1 + (#2 + #3)) - #4) -Counter in file 0 19:9 -> 19:14, (#1 + (#2 + #3)) -Counter in file 0 21:9 -> 25:26, (((#1 + (#2 + #3)) - #4) + 0) -Counter in file 0 27:13 -> 27:41, #8 -Counter in file 0 27:41 -> 27:42, #5 -Counter in file 0 28:13 -> 28:42, (#8 - #5) -Counter in file 0 28:42 -> 28:43, #6 -Counter in file 0 32:13 -> 32:42, (((#1 + (#2 + #3)) - #4) - #8) -Counter in file 0 32:42 -> 32:43, #7 -Counter in file 0 33:10 -> 33:11, #2 -Counter in file 0 33:10 -> 33:11, #3 -Counter in file 0 34:6 -> 34:7, (#2 + #3) -Counter in file 0 35:5 -> 35:11, #4 -Counter in file 0 36:1 -> 36:2, ((#5 + (#6 + #7)) + #4) -Counter in file 0 5:8 -> 5:20, #1 -Counter in file 0 6:9 -> 6:16, #2 -Counter in file 0 8:9 -> 8:15, (#1 - #2) -Counter in file 0 10:1 -> 10:2, (#2 + (#1 - #2)) -Emitting segments for file: ../coverage/try_error_result.rs -Combined regions: - 5:8 -> 5:20 (count=6) - 6:9 -> 6:16 (count=1) - 8:9 -> 8:15 (count=5) - 10:1 -> 10:2 (count=6) - 13:9 -> 14:23 (count=1) - 17:9 -> 17:10 (count=6) - 19:9 -> 19:14 (count=6) - 21:9 -> 25:26 (count=6) - 27:13 -> 27:41 (count=1) - 27:41 -> 27:42 (count=1) - 28:13 -> 28:42 (count=0) - 28:42 -> 28:43 (count=0) - 32:13 -> 32:42 (count=5) - 32:42 -> 32:43 (count=0) - 33:10 -> 33:11 (count=5) - 34:6 -> 34:7 (count=5) - 35:5 -> 35:11 (count=0) - 36:1 -> 36:2 (count=1) -Segment at 5:8 (count = 6), RegionEntry -Segment at 5:20 (count = 0), Skipped -Segment at 6:9 (count = 1), RegionEntry -Segment at 6:16 (count = 0), Skipped -Segment at 8:9 (count = 5), RegionEntry -Segment at 8:15 (count = 0), Skipped -Segment at 10:1 (count = 6), RegionEntry -Segment at 10:2 (count = 0), Skipped -Segment at 13:9 (count = 1), RegionEntry -Segment at 14:23 (count = 0), Skipped -Segment at 17:9 (count = 6), RegionEntry -Segment at 17:10 (count = 0), Skipped -Segment at 19:9 (count = 6), RegionEntry -Segment at 19:14 (count = 0), Skipped -Segment at 21:9 (count = 6), RegionEntry -Segment at 25:26 (count = 0), Skipped -Segment at 27:13 (count = 1), RegionEntry -Segment at 27:41 (count = 1), RegionEntry -Segment at 27:42 (count = 0), Skipped -Segment at 28:13 (count = 0), RegionEntry -Segment at 28:42 (count = 0), RegionEntry -Segment at 28:43 (count = 0), Skipped -Segment at 32:13 (count = 5), RegionEntry -Segment at 32:42 (count = 0), RegionEntry -Segment at 32:43 (count = 0), Skipped -Segment at 33:10 (count = 5), RegionEntry -Segment at 33:11 (count = 0), Skipped -Segment at 34:6 (count = 5), RegionEntry -Segment at 34:7 (count = 0), Skipped -Segment at 35:5 (count = 0), RegionEntry -Segment at 35:11 (count = 0), Skipped -Segment at 36:1 (count = 1), RegionEntry -Segment at 36:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.while.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.while.txt deleted file mode 100644 index b0e881da7c8..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.while.txt +++ /dev/null @@ -1,18 +0,0 @@ -Counter in file 0 2:9 -> 2:16, #1 -Counter in file 0 3:11 -> 3:20, (#1 + #2) -Counter in file 0 3:21 -> 4:6, #2 -Counter in file 0 5:1 -> 5:2, ((#1 + #2) - #2) -Emitting segments for file: ../coverage/while.rs -Combined regions: - 2:9 -> 2:16 (count=1) - 3:11 -> 3:20 (count=1) - 3:21 -> 4:6 (count=0) - 5:1 -> 5:2 (count=1) -Segment at 2:9 (count = 1), RegionEntry -Segment at 2:16 (count = 0), Skipped -Segment at 3:11 (count = 1), RegionEntry -Segment at 3:20 (count = 0), Skipped -Segment at 3:21 (count = 0), RegionEntry -Segment at 4:6 (count = 0), Skipped -Segment at 5:1 (count = 1), RegionEntry -Segment at 5:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.while_early_ret.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.while_early_ret.txt deleted file mode 100644 index 7e79a8f00e1..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.while_early_ret.txt +++ /dev/null @@ -1,38 +0,0 @@ -Counter in file 0 5:9 -> 5:27, #1 -Counter in file 0 7:9 -> 9:10, (#1 + #2) -Counter in file 0 12:13 -> 14:14, ((#1 + #2) - #3) -Counter in file 0 18:21 -> 20:22, (((#1 + #2) - #3) - #2) -Counter in file 0 22:21 -> 22:27, #4 -Counter in file 0 26:21 -> 26:27, #5 -Counter in file 0 30:9 -> 32:10, #2 -Counter in file 0 35:5 -> 35:11, #3 -Counter in file 0 36:1 -> 36:2, ((#4 + #5) + #3) -Emitting segments for file: ../coverage/while_early_ret.rs -Combined regions: - 5:9 -> 5:27 (count=1) - 7:9 -> 9:10 (count=7) - 12:13 -> 14:14 (count=7) - 18:21 -> 20:22 (count=1) - 22:21 -> 22:27 (count=0) - 26:21 -> 26:27 (count=1) - 30:9 -> 32:10 (count=6) - 35:5 -> 35:11 (count=0) - 36:1 -> 36:2 (count=1) -Segment at 5:9 (count = 1), RegionEntry -Segment at 5:27 (count = 0), Skipped -Segment at 7:9 (count = 7), RegionEntry -Segment at 9:10 (count = 0), Skipped -Segment at 12:13 (count = 7), RegionEntry -Segment at 14:14 (count = 0), Skipped -Segment at 18:21 (count = 1), RegionEntry -Segment at 20:22 (count = 0), Skipped -Segment at 22:21 (count = 0), RegionEntry -Segment at 22:27 (count = 0), Skipped -Segment at 26:21 (count = 1), RegionEntry -Segment at 26:27 (count = 0), Skipped -Segment at 30:9 (count = 6), RegionEntry -Segment at 32:10 (count = 0), Skipped -Segment at 35:5 (count = 0), RegionEntry -Segment at 35:11 (count = 0), Skipped -Segment at 36:1 (count = 1), RegionEntry -Segment at 36:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.yield.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.yield.txt deleted file mode 100644 index a1075358211..00000000000 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.yield.txt +++ /dev/null @@ -1,90 +0,0 @@ -Counter in file 0 8:9 -> 8:22, #1 -Counter in file 0 13:11 -> 14:35, (#1 + 0) -Counter in file 0 14:39 -> 14:41, #4 -Counter in file 0 15:14 -> 15:52, (#2 + #3) -Counter in file 0 17:11 -> 17:46, (#4 + 0) -Counter in file 0 18:34 -> 18:39, (#4 - #5) -Counter in file 0 18:44 -> 18:46, ((#4 - #5) - #6) -Counter in file 0 19:14 -> 19:52, (#5 + #6) -Counter in file 0 22:9 -> 22:22, (((#4 - #5) - #6) + 0) -Counter in file 0 29:11 -> 30:35, (((#4 - #5) - #6) + 0) -Counter in file 0 30:39 -> 30:41, #9 -Counter in file 0 31:14 -> 31:52, (#7 + #8) -Counter in file 0 33:11 -> 34:35, (#9 + 0) -Counter in file 0 34:39 -> 34:41, #12 -Counter in file 0 35:14 -> 35:52, (#10 + #11) -Counter in file 0 37:1 -> 37:2, (#12 + 0) -Counter in file 0 9:9 -> 9:16, #1 -Counter in file 0 10:16 -> 11:6, #2 -Counter in file 0 23:9 -> 23:16, #1 -Counter in file 0 24:9 -> 24:16, #2 -Counter in file 0 25:9 -> 25:16, #3 -Counter in file 0 26:16 -> 27:6, #4 -Emitting segments for file: ../coverage/yield.rs -Combined regions: - 8:9 -> 8:22 (count=1) - 9:9 -> 9:16 (count=1) - 10:16 -> 11:6 (count=1) - 13:11 -> 14:35 (count=1) - 14:39 -> 14:41 (count=1) - 15:14 -> 15:52 (count=0) - 17:11 -> 17:46 (count=1) - 18:34 -> 18:39 (count=1) - 18:44 -> 18:46 (count=1) - 19:14 -> 19:52 (count=0) - 22:9 -> 22:22 (count=1) - 23:9 -> 23:16 (count=1) - 24:9 -> 24:16 (count=1) - 25:9 -> 25:16 (count=0) - 26:16 -> 27:6 (count=0) - 29:11 -> 30:35 (count=1) - 30:39 -> 30:41 (count=1) - 31:14 -> 31:52 (count=0) - 33:11 -> 34:35 (count=1) - 34:39 -> 34:41 (count=1) - 35:14 -> 35:52 (count=0) - 37:1 -> 37:2 (count=1) -Segment at 8:9 (count = 1), RegionEntry -Segment at 8:22 (count = 0), Skipped -Segment at 9:9 (count = 1), RegionEntry -Segment at 9:16 (count = 0), Skipped -Segment at 10:16 (count = 1), RegionEntry -Segment at 11:6 (count = 0), Skipped -Segment at 13:11 (count = 1), RegionEntry -Segment at 14:35 (count = 0), Skipped -Segment at 14:39 (count = 1), RegionEntry -Segment at 14:41 (count = 0), Skipped -Segment at 15:14 (count = 0), RegionEntry -Segment at 15:52 (count = 0), Skipped -Segment at 17:11 (count = 1), RegionEntry -Segment at 17:46 (count = 0), Skipped -Segment at 18:34 (count = 1), RegionEntry -Segment at 18:39 (count = 0), Skipped -Segment at 18:44 (count = 1), RegionEntry -Segment at 18:46 (count = 0), Skipped -Segment at 19:14 (count = 0), RegionEntry -Segment at 19:52 (count = 0), Skipped -Segment at 22:9 (count = 1), RegionEntry -Segment at 22:22 (count = 0), Skipped -Segment at 23:9 (count = 1), RegionEntry -Segment at 23:16 (count = 0), Skipped -Segment at 24:9 (count = 1), RegionEntry -Segment at 24:16 (count = 0), Skipped -Segment at 25:9 (count = 0), RegionEntry -Segment at 25:16 (count = 0), Skipped -Segment at 26:16 (count = 0), RegionEntry -Segment at 27:6 (count = 0), Skipped -Segment at 29:11 (count = 1), RegionEntry -Segment at 30:35 (count = 0), Skipped -Segment at 30:39 (count = 1), RegionEntry -Segment at 30:41 (count = 0), Skipped -Segment at 31:14 (count = 0), RegionEntry -Segment at 31:52 (count = 0), Skipped -Segment at 33:11 (count = 1), RegionEntry -Segment at 34:35 (count = 0), Skipped -Segment at 34:39 (count = 1), RegionEntry -Segment at 34:41 (count = 0), Skipped -Segment at 35:14 (count = 0), RegionEntry -Segment at 35:52 (count = 0), Skipped -Segment at 37:1 (count = 1), RegionEntry -Segment at 37:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports/Makefile b/src/test/run-make-fulldeps/coverage-reports/Makefile index 91acedb68ec..0902ad74051 100644 --- a/src/test/run-make-fulldeps/coverage-reports/Makefile +++ b/src/test/run-make-fulldeps/coverage-reports/Makefile @@ -4,10 +4,6 @@ # FIXME(mati865): MinGW GCC miscompiles compiler-rt profiling library but with Clang it works # properly. Since we only have GCC on the CI ignore the test for now. -# ISSUE(76038): When targeting MSVC, Rust binaries built with both `-Z instrument-coverage` and -# `-C link-dead-code` typically crash (with a seg-fault) or at best generate an empty `*.profraw`. -# See ../coverage/coverage_tools.mk for more information. - -include ../coverage/coverage_tools.mk BASEDIR=../coverage-reports @@ -57,8 +53,7 @@ endif $$( grep -q '^\/\/ require-rust-edition-2018' $(SOURCEDIR)/$@.rs && \ echo "--edition=2018" \ ) \ - -Zinstrument-coverage \ - -Clink-dead-code=$(LINK_DEAD_CODE) + -Zinstrument-coverage # Run it in order to generate some profiling data, # with `LLVM_PROFILE_FILE=` environment variable set to diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.abort.json b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.abort.json index 33cfc9f3ed7..db7dd0b15e9 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.abort.json +++ b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.abort.json @@ -16,15 +16,15 @@ "percent": 100 }, "lines": { - "count": 15, - "covered": 13, - "percent": 86.66666666666667 + "count": 19, + "covered": 17, + "percent": 89.47368421052632 }, "regions": { - "count": 10, - "covered": 9, + "count": 17, + "covered": 16, "notcovered": 1, - "percent": 90 + "percent": 94.11764705882352 } } } @@ -41,15 +41,15 @@ "percent": 100 }, "lines": { - "count": 15, - "covered": 13, - "percent": 86.66666666666667 + "count": 19, + "covered": 17, + "percent": 89.47368421052632 }, "regions": { - "count": 10, - "covered": 9, + "count": 17, + "covered": 16, "notcovered": 1, - "percent": 90 + "percent": 94.11764705882352 } } } diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.assert.json b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.assert.json index aa2a0cbebe7..024b5f11179 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.assert.json +++ b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.assert.json @@ -16,9 +16,9 @@ "percent": 100 }, "lines": { - "count": 13, - "covered": 10, - "percent": 76.92307692307693 + "count": 15, + "covered": 12, + "percent": 80 }, "regions": { "count": 14, @@ -41,9 +41,9 @@ "percent": 100 }, "lines": { - "count": 13, - "covered": 10, - "percent": 76.92307692307693 + "count": 15, + "covered": 12, + "percent": 80 }, "regions": { "count": 14, diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.async.json b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.async.json index 004bedeea62..4cc6ea39425 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.async.json +++ b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.async.json @@ -6,50 +6,50 @@ "filename": "../coverage/async.rs", "summary": { "functions": { - "count": 9, - "covered": 9, - "percent": 100 + "count": 16, + "covered": 15, + "percent": 93.75 }, "instantiations": { - "count": 9, - "covered": 9, - "percent": 100 + "count": 16, + "covered": 15, + "percent": 93.75 }, "lines": { - "count": 31, - "covered": 30, - "percent": 96.7741935483871 + "count": 102, + "covered": 75, + "percent": 73.52941176470588 }, "regions": { - "count": 21, - "covered": 18, - "notcovered": 3, - "percent": 85.71428571428571 + "count": 76, + "covered": 35, + "notcovered": 41, + "percent": 46.05263157894737 } } } ], "totals": { "functions": { - "count": 9, - "covered": 9, - "percent": 100 + "count": 16, + "covered": 15, + "percent": 93.75 }, "instantiations": { - "count": 9, - "covered": 9, - "percent": 100 + "count": 16, + "covered": 15, + "percent": 93.75 }, "lines": { - "count": 31, - "covered": 30, - "percent": 96.7741935483871 + "count": 102, + "covered": 75, + "percent": 73.52941176470588 }, "regions": { - "count": 21, - "covered": 18, - "notcovered": 3, - "percent": 85.71428571428571 + "count": 76, + "covered": 35, + "notcovered": 41, + "percent": 46.05263157894737 } } } diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.closure.json b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.closure.json index bff55300b3c..39e1dea66f9 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.closure.json +++ b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.closure.json @@ -6,50 +6,50 @@ "filename": "../coverage/closure.rs", "summary": { "functions": { - "count": 5, - "covered": 3, - "percent": 60 + "count": 6, + "covered": 4, + "percent": 66.66666666666666 }, "instantiations": { - "count": 5, - "covered": 3, - "percent": 60 + "count": 6, + "covered": 4, + "percent": 66.66666666666666 }, "lines": { - "count": 91, - "covered": 77, - "percent": 84.61538461538461 + "count": 161, + "covered": 131, + "percent": 81.36645962732919 }, "regions": { - "count": 25, - "covered": 13, - "notcovered": 12, - "percent": 52 + "count": 42, + "covered": 22, + "notcovered": 20, + "percent": 52.38095238095239 } } } ], "totals": { "functions": { - "count": 5, - "covered": 3, - "percent": 60 + "count": 6, + "covered": 4, + "percent": 66.66666666666666 }, "instantiations": { - "count": 5, - "covered": 3, - "percent": 60 + "count": 6, + "covered": 4, + "percent": 66.66666666666666 }, "lines": { - "count": 91, - "covered": 77, - "percent": 84.61538461538461 + "count": 161, + "covered": 131, + "percent": 81.36645962732919 }, "regions": { - "count": 25, - "covered": 13, - "notcovered": 12, - "percent": 52 + "count": 42, + "covered": 22, + "notcovered": 20, + "percent": 52.38095238095239 } } } diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.conditions.json b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.conditions.json index d69ca80839a..69356604856 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.conditions.json +++ b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.conditions.json @@ -21,10 +21,10 @@ "percent": 51.5625 }, "regions": { - "count": 88, - "covered": 25, - "notcovered": 63, - "percent": 28.40909090909091 + "count": 64, + "covered": 21, + "notcovered": 43, + "percent": 32.8125 } } } @@ -46,10 +46,10 @@ "percent": 51.5625 }, "regions": { - "count": 88, - "covered": 25, - "notcovered": 63, - "percent": 28.40909090909091 + "count": 64, + "covered": 21, + "notcovered": 43, + "percent": 32.8125 } } } diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.loop_break_value.json b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.dead_code.json similarity index 52% rename from src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.loop_break_value.json rename to src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.dead_code.json index 6cb1465c818..6588ba90274 100644 --- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.loop_break_value.json +++ b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.dead_code.json @@ -3,28 +3,28 @@ { "files": [ { - "filename": "../coverage/loop_break_value.rs", + "filename": "../coverage/dead_code.rs", "summary": { "functions": { "count": 1, - "covered": 1, - "percent": 100 + "covered": 0, + "percent": 0 }, "instantiations": { "count": 1, - "covered": 1, - "percent": 100 + "covered": 0, + "percent": 0 }, "lines": { - "count": 11, + "count": 33, "covered": 11, - "percent": 100 + "percent": 33.33333333333333 }, "regions": { - "count": 1, - "covered": 1, - "notcovered": 0, - "percent": 100 + "count": 12, + "covered": 3, + "notcovered": 9, + "percent": 25 } } } @@ -32,24 +32,24 @@ "totals": { "functions": { "count": 1, - "covered": 1, - "percent": 100 + "covered": 0, + "percent": 0 }, "instantiations": { "count": 1, - "covered": 1, - "percent": 100 + "covered": 0, + "percent": 0 }, "lines": { - "count": 11, + "count": 33, "covered": 11, - "percent": 100 + "percent": 33.33333333333333 }, "regions": { - "count": 1, - "covered": 1, - "notcovered": 0, - "percent": 100 + "count": 12, + "covered": 3, + "notcovered": 9, + "percent": 25 } } } diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.drop_trait.json b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.drop_trait.json index bd2e2d56d4a..e303d3802f5 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.drop_trait.json +++ b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.drop_trait.json @@ -16,13 +16,13 @@ "percent": 100 }, "lines": { - "count": 10, - "covered": 10, + "count": 12, + "covered": 12, "percent": 100 }, "regions": { - "count": 5, - "covered": 5, + "count": 4, + "covered": 4, "notcovered": 0, "percent": 100 } @@ -41,13 +41,13 @@ "percent": 100 }, "lines": { - "count": 10, - "covered": 10, + "count": 12, + "covered": 12, "percent": 100 }, "regions": { - "count": 5, - "covered": 5, + "count": 4, + "covered": 4, "notcovered": 0, "percent": 100 } diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.generics.json b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.generics.json index a50f4657e20..bfae69d7ac4 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.generics.json +++ b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.generics.json @@ -16,13 +16,13 @@ "percent": 100 }, "lines": { - "count": 16, - "covered": 16, + "count": 18, + "covered": 18, "percent": 100 }, "regions": { - "count": 6, - "covered": 6, + "count": 5, + "covered": 5, "notcovered": 0, "percent": 100 } @@ -41,13 +41,13 @@ "percent": 100 }, "lines": { - "count": 16, - "covered": 16, + "count": 18, + "covered": 18, "percent": 100 }, "regions": { - "count": 6, - "covered": 6, + "count": 5, + "covered": 5, "notcovered": 0, "percent": 100 } diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.if.json b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.if.json index 84dcc251f3f..8f233f8bfc5 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.if.json +++ b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.if.json @@ -16,15 +16,15 @@ "percent": 100 }, "lines": { - "count": 19, - "covered": 19, + "count": 26, + "covered": 26, "percent": 100 }, "regions": { - "count": 5, - "covered": 4, + "count": 4, + "covered": 3, "notcovered": 1, - "percent": 80 + "percent": 75 } } } @@ -41,15 +41,15 @@ "percent": 100 }, "lines": { - "count": 19, - "covered": 19, + "count": 26, + "covered": 26, "percent": 100 }, "regions": { - "count": 5, - "covered": 4, + "count": 4, + "covered": 3, "notcovered": 1, - "percent": 80 + "percent": 75 } } } diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.if_else.json b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.if_else.json index 36f81ceae19..5c0454e1ecb 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.if_else.json +++ b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.if_else.json @@ -16,9 +16,9 @@ "percent": 100 }, "lines": { - "count": 28, - "covered": 19, - "percent": 67.85714285714286 + "count": 32, + "covered": 23, + "percent": 71.875 }, "regions": { "count": 7, @@ -41,9 +41,9 @@ "percent": 100 }, "lines": { - "count": 28, - "covered": 19, - "percent": 67.85714285714286 + "count": 32, + "covered": 23, + "percent": 71.875 }, "regions": { "count": 7, diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.inner_items.json b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.inner_items.json index 5dc82d2168c..07ef9a9ab33 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.inner_items.json +++ b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.inner_items.json @@ -16,8 +16,8 @@ "percent": 100 }, "lines": { - "count": 27, - "covered": 27, + "count": 29, + "covered": 29, "percent": 100 }, "regions": { @@ -41,8 +41,8 @@ "percent": 100 }, "lines": { - "count": 27, - "covered": 27, + "count": 29, + "covered": 29, "percent": 100 }, "regions": { diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.lazy_boolean.json b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.lazy_boolean.json index 5a953b90b42..c3a96b08e6a 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.lazy_boolean.json +++ b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.lazy_boolean.json @@ -16,15 +16,15 @@ "percent": 100 }, "lines": { - "count": 40, - "covered": 30, + "count": 44, + "covered": 33, "percent": 75 }, "regions": { - "count": 37, - "covered": 26, - "notcovered": 11, - "percent": 70.27027027027027 + "count": 28, + "covered": 21, + "notcovered": 7, + "percent": 75 } } } @@ -41,15 +41,15 @@ "percent": 100 }, "lines": { - "count": 40, - "covered": 30, + "count": 44, + "covered": 33, "percent": 75 }, "regions": { - "count": 37, - "covered": 26, - "notcovered": 11, - "percent": 70.27027027027027 + "count": 28, + "covered": 21, + "notcovered": 7, + "percent": 75 } } } diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.loops_branches.json b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.loops_branches.json index 2dca41df9d2..6d566f2b818 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.loops_branches.json +++ b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.loops_branches.json @@ -21,10 +21,10 @@ "percent": 100 }, "regions": { - "count": 9, - "covered": 8, + "count": 8, + "covered": 7, "notcovered": 1, - "percent": 88.88888888888889 + "percent": 87.5 } } } @@ -46,10 +46,10 @@ "percent": 100 }, "regions": { - "count": 9, - "covered": 8, + "count": 8, + "covered": 7, "notcovered": 1, - "percent": 88.88888888888889 + "percent": 87.5 } } } diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.nested_loops.json b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.nested_loops.json index ce3c957e660..bf3b5cb031b 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.nested_loops.json +++ b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.nested_loops.json @@ -17,14 +17,14 @@ }, "lines": { "count": 22, - "covered": 16, - "percent": 72.72727272727273 + "covered": 17, + "percent": 77.27272727272727 }, "regions": { - "count": 17, - "covered": 13, - "notcovered": 4, - "percent": 76.47058823529412 + "count": 14, + "covered": 11, + "notcovered": 3, + "percent": 78.57142857142857 } } } @@ -42,14 +42,14 @@ }, "lines": { "count": 22, - "covered": 16, - "percent": 72.72727272727273 + "covered": 17, + "percent": 77.27272727272727 }, "regions": { - "count": 17, - "covered": 13, - "notcovered": 4, - "percent": 76.47058823529412 + "count": 14, + "covered": 11, + "notcovered": 3, + "percent": 78.57142857142857 } } } diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.overflow.json b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.overflow.json index 176bfd7abeb..030d7b033f0 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.overflow.json +++ b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.overflow.json @@ -16,15 +16,15 @@ "percent": 100 }, "lines": { - "count": 21, - "covered": 17, - "percent": 80.95238095238095 + "count": 23, + "covered": 19, + "percent": 82.6086956521739 }, "regions": { - "count": 14, - "covered": 12, + "count": 13, + "covered": 11, "notcovered": 2, - "percent": 85.71428571428571 + "percent": 84.61538461538461 } } } @@ -41,15 +41,15 @@ "percent": 100 }, "lines": { - "count": 21, - "covered": 17, - "percent": 80.95238095238095 + "count": 23, + "covered": 19, + "percent": 82.6086956521739 }, "regions": { - "count": 14, - "covered": 12, + "count": 13, + "covered": 11, "notcovered": 2, - "percent": 85.71428571428571 + "percent": 84.61538461538461 } } } diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.panic_unwind.json b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.panic_unwind.json index 5b13109dbe6..b1d44fdfeac 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.panic_unwind.json +++ b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.panic_unwind.json @@ -16,9 +16,9 @@ "percent": 100 }, "lines": { - "count": 17, - "covered": 14, - "percent": 82.35294117647058 + "count": 19, + "covered": 16, + "percent": 84.21052631578947 }, "regions": { "count": 13, @@ -41,9 +41,9 @@ "percent": 100 }, "lines": { - "count": 17, - "covered": 14, - "percent": 82.35294117647058 + "count": 19, + "covered": 16, + "percent": 84.21052631578947 }, "regions": { "count": 13, diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.partial_eq.json b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.partial_eq.json index a7b98247b66..6a0d83a6d0e 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.partial_eq.json +++ b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.partial_eq.json @@ -7,24 +7,24 @@ "summary": { "functions": { "count": 5, - "covered": 5, - "percent": 100 + "covered": 4, + "percent": 80 }, "instantiations": { "count": 5, - "covered": 5, - "percent": 100 + "covered": 4, + "percent": 80 }, "lines": { - "count": 15, - "covered": 15, - "percent": 100 + "count": 18, + "covered": 16, + "percent": 88.88888888888889 }, "regions": { - "count": 6, - "covered": 6, - "notcovered": 0, - "percent": 100 + "count": 24, + "covered": 5, + "notcovered": 19, + "percent": 20.833333333333336 } } } @@ -32,24 +32,24 @@ "totals": { "functions": { "count": 5, - "covered": 5, - "percent": 100 + "covered": 4, + "percent": 80 }, "instantiations": { "count": 5, - "covered": 5, - "percent": 100 + "covered": 4, + "percent": 80 }, "lines": { - "count": 15, - "covered": 15, - "percent": 100 + "count": 18, + "covered": 16, + "percent": 88.88888888888889 }, "regions": { - "count": 6, - "covered": 6, - "notcovered": 0, - "percent": 100 + "count": 24, + "covered": 5, + "notcovered": 19, + "percent": 20.833333333333336 } } } diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.simple_loop.json b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.simple_loop.json index ada6bb062dd..4c849692a03 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.simple_loop.json +++ b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.simple_loop.json @@ -16,15 +16,15 @@ "percent": 100 }, "lines": { - "count": 19, - "covered": 19, + "count": 25, + "covered": 25, "percent": 100 }, "regions": { - "count": 9, - "covered": 8, + "count": 7, + "covered": 6, "notcovered": 1, - "percent": 88.88888888888889 + "percent": 85.71428571428571 } } } @@ -41,15 +41,15 @@ "percent": 100 }, "lines": { - "count": 19, - "covered": 19, + "count": 25, + "covered": 25, "percent": 100 }, "regions": { - "count": 9, - "covered": 8, + "count": 7, + "covered": 6, "notcovered": 1, - "percent": 88.88888888888889 + "percent": 85.71428571428571 } } } diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.simple_match.json b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.simple_match.json index 63d1ae74c5f..41bc4d57d59 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.simple_match.json +++ b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.simple_match.json @@ -16,15 +16,15 @@ "percent": 100 }, "lines": { - "count": 24, - "covered": 24, + "count": 27, + "covered": 27, "percent": 100 }, "regions": { - "count": 15, - "covered": 14, + "count": 11, + "covered": 10, "notcovered": 1, - "percent": 93.33333333333333 + "percent": 90.9090909090909 } } } @@ -41,15 +41,15 @@ "percent": 100 }, "lines": { - "count": 24, - "covered": 24, + "count": 27, + "covered": 27, "percent": 100 }, "regions": { - "count": 15, - "covered": 14, + "count": 11, + "covered": 10, "notcovered": 1, - "percent": 93.33333333333333 + "percent": 90.9090909090909 } } } diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.tight_inf_loop.json b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.tight_inf_loop.json index 872560384eb..7f6c90b92d2 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.tight_inf_loop.json +++ b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.tight_inf_loop.json @@ -16,8 +16,8 @@ "percent": 100 }, "lines": { - "count": 2, - "covered": 2, + "count": 4, + "covered": 4, "percent": 100 }, "regions": { @@ -41,8 +41,8 @@ "percent": 100 }, "lines": { - "count": 2, - "covered": 2, + "count": 4, + "covered": 4, "percent": 100 }, "regions": { diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.try_error_result.json b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.try_error_result.json index 78b935b1568..df4de9dc54b 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.try_error_result.json +++ b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.try_error_result.json @@ -21,10 +21,10 @@ "percent": 90 }, "regions": { - "count": 19, - "covered": 14, - "notcovered": 5, - "percent": 73.68421052631578 + "count": 16, + "covered": 12, + "notcovered": 4, + "percent": 75 } } } @@ -46,10 +46,10 @@ "percent": 90 }, "regions": { - "count": 19, - "covered": 14, - "notcovered": 5, - "percent": 73.68421052631578 + "count": 16, + "covered": 12, + "notcovered": 4, + "percent": 75 } } } diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.while.json b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.while.json index 339c6555668..339c533ada6 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.while.json +++ b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.while.json @@ -16,9 +16,9 @@ "percent": 100 }, "lines": { - "count": 4, - "covered": 3, - "percent": 75 + "count": 5, + "covered": 4, + "percent": 80 }, "regions": { "count": 4, @@ -41,9 +41,9 @@ "percent": 100 }, "lines": { - "count": 4, - "covered": 3, - "percent": 75 + "count": 5, + "covered": 4, + "percent": 80 }, "regions": { "count": 4, diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.while_early_ret.json b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.while_early_ret.json index ad43f5d9926..b7fe2a0fb47 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.while_early_ret.json +++ b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.while_early_ret.json @@ -16,9 +16,9 @@ "percent": 100 }, "lines": { - "count": 17, - "covered": 15, - "percent": 88.23529411764706 + "count": 19, + "covered": 17, + "percent": 89.47368421052632 }, "regions": { "count": 9, @@ -41,9 +41,9 @@ "percent": 100 }, "lines": { - "count": 17, - "covered": 15, - "percent": 88.23529411764706 + "count": 19, + "covered": 17, + "percent": 89.47368421052632 }, "regions": { "count": 9, diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.yield.json b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.yield.json index 9f25bc971c5..6fc41212bc0 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.yield.json +++ b/src/test/run-make-fulldeps/coverage-reports/expected_export_coverage.yield.json @@ -16,15 +16,15 @@ "percent": 100 }, "lines": { - "count": 23, - "covered": 16, - "percent": 69.56521739130434 + "count": 26, + "covered": 19, + "percent": 73.07692307692307 }, "regions": { - "count": 22, - "covered": 16, + "count": 23, + "covered": 17, "notcovered": 6, - "percent": 72.72727272727273 + "percent": 73.91304347826086 } } } @@ -41,15 +41,15 @@ "percent": 100 }, "lines": { - "count": 23, - "covered": 16, - "percent": 69.56521739130434 + "count": 26, + "covered": 19, + "percent": 73.07692307692307 }, "regions": { - "count": 22, - "covered": 16, + "count": 23, + "covered": 17, "notcovered": 6, - "percent": 72.72727272727273 + "percent": 73.91304347826086 } } } diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.abort.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.abort.txt index 40c9c71a2aa..3b5d5eb4227 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.abort.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.abort.txt @@ -2,34 +2,69 @@ 2| |#![allow(unused_assignments)] 3| | 4| |#[unwind(aborts)] - 5| |fn might_abort(should_abort: bool) { - 6| 4| if should_abort { + 5| 12|fn might_abort(should_abort: bool) { + 6| 12| if should_abort { 7| 0| println!("aborting..."); 8| 0| panic!("panics and aborts"); - 9| 4| } else { - 10| 4| println!("Don't Panic"); - 11| 4| } - 12| 4|} + 9| 12| } else { + 10| 12| println!("Don't Panic"); + 11| 12| } + 12| 12|} 13| | - 14| |fn main() -> Result<(),u8> { + 14| 1|fn main() -> Result<(), u8> { 15| 1| let mut countdown = 10; 16| 11| while countdown > 0 { 17| 10| if countdown < 5 { 18| 4| might_abort(false); 19| 6| } - 20| 10| countdown -= 1; - 21| | } - 22| 1| Ok(()) - 23| 1|} - 24| | - 25| |// Notes: - 26| |// 1. Compare this program and its coverage results to those of the similar tests - 27| |// `panic_unwind.rs` and `try_error_result.rs`. - 28| |// 2. This test confirms the coverage generated when a program includes `TerminatorKind::Abort`. - 29| |// 3. The test does not invoke the abort. By executing to a successful completion, the coverage - 30| |// results show where the program did and did not execute. - 31| |// 4. If the program actually aborted, the coverage counters would not be saved (which "works as - 32| |// intended"). Coverage results would show no executed coverage regions. - 33| |// 6. If `should_abort` is `true` and the program aborts, the program exits with a `132` status - 34| |// (on Linux at least). + 20| | // See discussion (below the `Notes` section) on coverage results for the closing brace. + 21| 10| if countdown < 5 { might_abort(false); } // Counts for different regions on one line. + ^4 ^6 + 22| | // For the following example, the closing brace is the last character on the line. + 23| | // This shows the character after the closing brace is highlighted, even if that next + 24| | // character is a newline. + 25| 10| if countdown < 5 { might_abort(false); } + ^4 ^6 + 26| 10| countdown -= 1; + 27| | } + 28| 1| Ok(()) + 29| 1|} + 30| | + 31| |// Notes: + 32| |// 1. Compare this program and its coverage results to those of the similar tests + 33| |// `panic_unwind.rs` and `try_error_result.rs`. + 34| |// 2. This test confirms the coverage generated when a program includes `TerminatorKind::Abort`. + 35| |// 3. The test does not invoke the abort. By executing to a successful completion, the coverage + 36| |// results show where the program did and did not execute. + 37| |// 4. If the program actually aborted, the coverage counters would not be saved (which "works as + 38| |// intended"). Coverage results would show no executed coverage regions. + 39| |// 6. If `should_abort` is `true` and the program aborts, the program exits with a `132` status + 40| |// (on Linux at least). + 41| | + 42| |/* + 43| | + 44| |Expect the following coverage results: + 45| | + 46| |```text + 47| | 16| 11| while countdown > 0 { + 48| | 17| 10| if countdown < 5 { + 49| | 18| 4| might_abort(false); + 50| | 19| 6| } + 51| |``` + 52| | + 53| |This is actually correct. + 54| | + 55| |The condition `countdown < 5` executed 10 times (10 loop iterations). + 56| | + 57| |It evaluated to `true` 4 times, and executed the `might_abort()` call. + 58| | + 59| |It skipped the body of the `might_abort()` call 6 times. If an `if` does not include an explicit + 60| |`else`, the coverage implementation injects a counter, at the character immediately after the `if`s + 61| |closing brace, to count the "implicit" `else`. This is the only way to capture the coverage of the + 62| |non-true condition. + 63| | + 64| |As another example of why this is important, say the condition was `countdown < 50`, which is always + 65| |`true`. In that case, we wouldn't have a test for what happens if `might_abort()` is not called. + 66| |The closing brace would have a count of `0`, highlighting the missed coverage. + 67| |*/ diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.assert.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.assert.txt index a6efcbabd35..355b53f7f3b 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.assert.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.assert.txt @@ -1,20 +1,20 @@ 1| |#![allow(unused_assignments)] 2| |// expect-exit-status-101 3| | - 4| |fn might_fail_assert(one_plus_one: u32) { + 4| 4|fn might_fail_assert(one_plus_one: u32) { 5| 4| println!("does 1 + 1 = {}?", one_plus_one); 6| 4| assert_eq!(1 + 1, one_plus_one, "the argument was wrong"); ^1 7| 3|} 8| | - 9| |fn main() -> Result<(),u8> { + 9| 1|fn main() -> Result<(),u8> { 10| 1| let mut countdown = 10; 11| 10| while countdown > 0 { 12| 10| if countdown == 1 { 13| 0| might_fail_assert(3); 14| 10| } else if countdown < 5 { 15| 3| might_fail_assert(2); - 16| 15| } + 16| 6| } 17| 9| countdown -= 1; 18| | } 19| 0| Ok(()) diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.async.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.async.txt index b5d99732102..f6d02891eea 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.async.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.async.txt @@ -2,65 +2,130 @@ 2| | 3| |// require-rust-edition-2018 4| | - 5| 1|async fn f() -> u8 { 1 } - 6| | - 7| |async fn foo() -> [bool; 10] { [false; 10] } - 8| | - 9| |pub async fn g(x: u8) { - 10| | match x { - 11| | y if f().await == y => (), - 12| | _ => (), - 13| | } - 14| 1|} - 15| | - 16| |// #78366: check the reference to the binding is recorded even if the binding is not autorefed - 17| | - 18| |async fn h(x: usize) { - 19| | match x { - 20| | y if foo().await[y] => (), - 21| | _ => (), - 22| | } - 23| 1|} - 24| | - 25| 1|async fn i(x: u8) { - 26| 1| match x { - 27| 1| y if f().await == y + 1 => (), + 5| 1|async fn c(x: u8) -> u8 { + 6| 1| if x == 8 { + 7| 1| 1 + 8| | } else { + 9| 0| 0 + 10| | } + 11| 1|} + 12| | + 13| 0|async fn d() -> u8 { 1 } + 14| | + 15| 0|async fn e() -> u8 { 1 } // unused function; executor does not block on `g()` + 16| | + 17| 1|async fn f() -> u8 { 1 } + 18| | + 19| 0|async fn foo() -> [bool; 10] { [false; 10] } // unused function; executor does not block on `h()` + 20| | + 21| 1|pub async fn g(x: u8) { + 22| 0| match x { + 23| 0| y if e().await == y => (), + 24| 0| y if f().await == y => (), + 25| 0| _ => (), + 26| | } + 27| 0|} + 28| | + 29| 1|async fn h(x: usize) { // The function signature is counted when called, but the body is not + 30| 0| // executed (not awaited) so the open brace has a `0` count (at least when + 31| 0| // displayed with `llvm-cov show` in color-mode). + 32| 0| match x { + 33| 0| y if foo().await[y] => (), + 34| 0| _ => (), + 35| | } + 36| 0|} + 37| | + 38| 1|async fn i(x: u8) { // line coverage is 1, but there are 2 regions: + 39| 1| // (a) the function signature, counted when the function is called; and + 40| 1| // (b) the open brace for the function body, counted once when the body is + 41| 1| // executed asynchronously. + 42| 1| match x { + 43| 1| y if c(x).await == y + 1 => { d().await; } + ^0 ^0 + 44| 1| y if f().await == y + 1 => (), ^0 ^0 - 28| 1| _ => (), - 29| | } - 30| 2|} - 31| | - 32| 1|fn main() { - 33| 1| let _ = g(10); - 34| 1| let _ = h(9); - 35| 1| let mut future = Box::pin(i(8)); - 36| 1| executor::block_on(future.as_mut()); - 37| 1|} - 38| | - 39| |mod executor { - 40| | use core::{ - 41| | future::Future, - 42| | pin::Pin, - 43| | task::{Context, Poll, RawWaker, RawWakerVTable, Waker}, - 44| | }; - 45| | - 46| | pub fn block_on(mut future: F) -> F::Output { - 47| 1| let mut future = unsafe { Pin::new_unchecked(&mut future) }; - 48| 1| - 49| 1| static VTABLE: RawWakerVTable = RawWakerVTable::new( - 50| 1| |_| unimplemented!("clone"), - 51| 1| |_| unimplemented!("wake"), - 52| 1| |_| unimplemented!("wake_by_ref"), - 53| 1| |_| (), - 54| 1| ); - 55| 1| let waker = unsafe { Waker::from_raw(RawWaker::new(core::ptr::null(), &VTABLE)) }; - 56| 1| let mut context = Context::from_waker(&waker); - 57| | - 58| | loop { - 59| 1| if let Poll::Ready(val) = future.as_mut().poll(&mut context) { - 60| 1| break val; - 61| | } - 62| 0| } - 63| 1| } - 64| |} + 45| 1| _ => (), + 46| | } + 47| 1|} + 48| | + 49| 1|fn j(x: u8) { + 50| 1| // non-async versions of `c()`, `d()`, and `f()` to make it similar to async `i()`. + 51| 1| fn c(x: u8) -> u8 { + 52| 1| if x == 8 { + 53| 1| 1 // This line appears covered, but the 1-character expression span covering the `1` + ^0 + 54| 1| // is not executed. (`llvm-cov show` displays a `^0` below the `1` ). This is because + 55| 1| // `fn j()` executes the open brace for the funciton body, followed by the function's + 56| 1| // first executable statement, `match x`. Inner function declarations are not + 57| 1| // "visible" to the MIR for `j()`, so the code region counts all lines between the + 58| 1| // open brace and the first statement as executed, which is, in a sense, true. + 59| 1| // `llvm-cov show` overcomes this kind of situation by showing the actual counts + 60| 1| // of the enclosed coverages, (that is, the `1` expression was not executed, and + 61| 1| // accurately displays a `0`). + 62| 1| } else { + 63| 1| 0 + 64| 1| } + 65| 1| } + 66| 1| fn d() -> u8 { 1 } + 67| 1| fn f() -> u8 { 1 } + 68| 1| match x { + 69| 1| y if c(x) == y + 1 => { d(); } + ^0 ^0 + 70| 1| y if f() == y + 1 => (), + ^0 ^0 + 71| 1| _ => (), + 72| | } + 73| 1|} + 74| | + 75| 0|fn k(x: u8) { // unused function + 76| 0| match x { + 77| 0| 1 => (), + 78| 0| 2 => (), + 79| 0| _ => (), + 80| | } + 81| 0|} + 82| | + 83| 1|fn l(x: u8) { + 84| 1| match x { + 85| 0| 1 => (), + 86| 0| 2 => (), + 87| 1| _ => (), + 88| | } + 89| 1|} + 90| | + 91| 1|fn main() { + 92| 1| let _ = g(10); + 93| 1| let _ = h(9); + 94| 1| let mut future = Box::pin(i(8)); + 95| 1| j(7); + 96| 1| l(6); + 97| 1| executor::block_on(future.as_mut()); + 98| 1|} + 99| | + 100| |mod executor { + 101| | use core::{ + 102| | future::Future, + 103| | pin::Pin, + 104| | task::{Context, Poll, RawWaker, RawWakerVTable, Waker}, + 105| | }; + 106| | + 107| 1| pub fn block_on(mut future: F) -> F::Output { + 108| 1| let mut future = unsafe { Pin::new_unchecked(&mut future) }; + 109| 1| + 110| 1| static VTABLE: RawWakerVTable = RawWakerVTable::new( + 111| 1| |_| unimplemented!("clone"), + 112| 1| |_| unimplemented!("wake"), + 113| 1| |_| unimplemented!("wake_by_ref"), + 114| 1| |_| (), + 115| 1| ); + 116| 1| let waker = unsafe { Waker::from_raw(RawWaker::new(core::ptr::null(), &VTABLE)) }; + 117| 1| let mut context = Context::from_waker(&waker); + 118| | + 119| | loop { + 120| 1| if let Poll::Ready(val) = future.as_mut().poll(&mut context) { + 121| 1| break val; + 122| 0| } + 123| | } + 124| 1| } + 125| |} diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.closure.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.closure.txt index aef26a62e25..7261cf0a3b0 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.closure.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.closure.txt @@ -16,7 +16,7 @@ 16| 1| unwrap_or_else 17| 1| ( 18| 1| || - 19| | { + 19| 0| { 20| 0| let mut countdown = 0; 21| 0| if is_false { 22| 0| countdown = 10; @@ -31,7 +31,7 @@ 31| 1| a 32| 1| = 33| 1| || - 34| | { + 34| 0| { 35| 0| let mut countdown = 0; 36| 0| if is_false { 37| 0| countdown = 10; @@ -58,7 +58,7 @@ 58| 1| unwrap_or_else 59| 1| ( 60| 1| || - 61| | { + 61| 1| { 62| 1| let mut countdown = 0; 63| 1| if is_false { 64| 0| countdown = 10; @@ -73,7 +73,7 @@ 73| 1| a 74| 1| = 75| 1| || - 76| | { + 76| 1| { 77| 1| let mut countdown = 0; 78| 1| if is_false { 79| 0| countdown = 10; @@ -90,5 +90,71 @@ 90| 1| a 91| 1| ) 92| 1| ); - 93| 1|} + 93| 1| + 94| 1| let + 95| 1| quote_closure + 96| 1| = + 97| 1| |val| + 98| 5| { + 99| 5| let mut countdown = 0; + 100| 5| if is_false { + 101| 0| countdown = 10; + 102| 5| } + 103| 5| format!("'{}'", val) + 104| 5| }; + 105| 1| println!( + 106| 1| "Repeated, quoted string: {:?}" + 107| 1| , + 108| 1| std::iter::repeat("repeat me") + 109| 1| .take(5) + 110| 1| .map + 111| 1| ( + 112| 1| quote_closure + 113| 1| ) + 114| 1| .collect::>() + 115| 1| ); + 116| 1| + 117| 1| let + 118| 1| _unused_closure + 119| 1| = + 120| 1| | + 121| | mut countdown + 122| | | + 123| 0| { + 124| 0| if is_false { + 125| 0| countdown = 10; + 126| 0| } + 127| 0| "closure should be unused".to_owned() + 128| 1| }; + 129| 1| + 130| 1| let mut countdown = 10; + 131| 1| let _short_unused_closure = | _unused_arg: u8 | countdown += 1; + ^0 + 132| 1| + 133| 1| // Macros can sometimes confuse the coverage results. Compare this next assignment, with an + 134| 1| // unused closure that invokes the `println!()` macro, with the closure assignment above, that + 135| 1| // does not use a macro. The closure above correctly shows `0` executions. + 136| 1| let _short_unused_closure = | _unused_arg: u8 | println!("not called"); + 137| 1| // The closure assignment above is executed, with a line count of `1`, but the `println!()` + 138| 1| // could not have been called, and yet, there is no indication that it wasn't... + 139| 1| + 140| 1| // ...but adding block braces gives the expected result, showing the block was not executed. + 141| 1| let _short_unused_closure_block = | _unused_arg: u8 | { println!("not called") }; + ^0 + 142| 1| + 143| 1| let _shortish_unused_closure = | _unused_arg: u8 | { + 144| 0| println!("not called") + 145| 1| }; + 146| 1| + 147| 1| let _as_short_unused_closure = | + 148| | _unused_arg: u8 + 149| 1| | { println!("not called") }; + ^0 + 150| 1| + 151| 1| let _almost_as_short_unused_closure = | + 152| | _unused_arg: u8 + 153| 1| | { println!("not called") } + ^0 + 154| 1| ; + 155| 1|} diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.conditions.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.conditions.txt index e55a574c056..656a2659775 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.conditions.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.conditions.txt @@ -1,6 +1,6 @@ 1| |#![allow(unused_assignments, unused_variables)] 2| | - 3| |fn main() { + 3| 1|fn main() { 4| 1| let mut countdown = 0; 5| 1| if true { 6| 1| countdown = 10; @@ -38,69 +38,53 @@ 37| | } 38| | 39| 1| if true { - 40| | // Demonstrate the difference with `TerminatorKind::Assert` as of 2020-11-15. Assert is no - 41| | // longer treated as a `BasicCoverageBlock` terminator, which changed the coverage region, - 42| | // for the executed `then` block above, to include the closing brace on line 30. That - 43| | // changed the line count, but the coverage code region (for the `else if` condition) is - 44| | // still valid. - 45| | // - 46| | // Note that `if` (then) and `else` blocks include the closing brace in their coverage - 47| | // code regions when the last line in the block ends in a semicolon, because the Rust - 48| | // compiler inserts a `StatementKind::Assign` to assign `const ()` to a `Place`, for the - 49| | // empty value for the executed block. When the last line does not end in a semicolon - 50| | // (that is, when the block actually results in a value), the additional `Assign` is not - 51| | // generated, and the brace is not included. - 52| 1| let mut countdown = 0; - 53| 1| if true { - 54| 1| countdown = 10; - 55| 1| } - 56| | - 57| 1| if countdown > 7 { - 58| 1| countdown -= 4; - 59| 1| } - 60| | // The closing brace of the `then` branch is now included in the coverage region, and shown - 61| | // as "executed" (giving its line a count of 1 here). Since, in the original version above, - 62| | // the closing brace shares the same line as the `else if` conditional expression (which is - 63| | // not executed if the first `then` condition is true), only the condition's code region is - 64| | // marked with a count of 0 now. - 65| 0| else if countdown > 2 { - 66| 0| if countdown < 1 || countdown > 5 || countdown != 9 { - 67| 0| countdown = 0; - 68| 0| } - 69| 0| countdown -= 5; - 70| | } else { - 71| 0| return; - 72| | } - 73| 1| } - 74| | - 75| 1| let mut countdown = 0; - 76| 1| if true { - 77| 1| countdown = 1; - 78| 1| } - 79| | - 80| 1| let z = if countdown > 7 { + 40| 1| let mut countdown = 0; + 41| 1| if true { + 42| 1| countdown = 10; + 43| 1| } + 44| | + 45| 1| if countdown > 7 { + 46| 1| countdown -= 4; + 47| 1| } + 48| 0| else if countdown > 2 { + 49| 0| if countdown < 1 || countdown > 5 || countdown != 9 { + 50| 0| countdown = 0; + 51| 0| } + 52| 0| countdown -= 5; + 53| | } else { + 54| 0| return; + 55| | } + 56| | } // Note: closing brace shows uncovered (vs. `0` for implicit else) because condition literal + 57| | // `true` was const-evaluated. The compiler knows the `if` block will be executed. + 58| | + 59| 1| let mut countdown = 0; + 60| 1| if true { + 61| 1| countdown = 1; + 62| 1| } + 63| | + 64| 1| let z = if countdown > 7 { ^0 - 81| 0| countdown -= 4; - 82| 1| } else if countdown > 2 { - 83| 0| if countdown < 1 || countdown > 5 || countdown != 9 { - 84| 0| countdown = 0; - 85| 0| } - 86| 0| countdown -= 5; - 87| | } else { - 88| 1| let should_be_reachable = countdown; - 89| 1| println!("reached"); - 90| 1| return; - 91| | }; - 92| | - 93| 0| let w = if countdown > 7 { - 94| 0| countdown -= 4; - 95| 0| } else if countdown > 2 { - 96| 0| if countdown < 1 || countdown > 5 || countdown != 9 { - 97| 0| countdown = 0; - 98| 0| } - 99| 0| countdown -= 5; - 100| | } else { - 101| 0| return; - 102| | }; - 103| 1|} + 65| 0| countdown -= 4; + 66| 1| } else if countdown > 2 { + 67| 0| if countdown < 1 || countdown > 5 || countdown != 9 { + 68| 0| countdown = 0; + 69| 0| } + 70| 0| countdown -= 5; + 71| | } else { + 72| 1| let should_be_reachable = countdown; + 73| 1| println!("reached"); + 74| 1| return; + 75| | }; + 76| | + 77| 0| let w = if countdown > 7 { + 78| 0| countdown -= 4; + 79| 0| } else if countdown > 2 { + 80| 0| if countdown < 1 || countdown > 5 || countdown != 9 { + 81| 0| countdown = 0; + 82| 0| } + 83| 0| countdown -= 5; + 84| | } else { + 85| 0| return; + 86| | }; + 87| 1|} diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.dead_code.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.dead_code.txt new file mode 100644 index 00000000000..09ff14c6f27 --- /dev/null +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.dead_code.txt @@ -0,0 +1,39 @@ + 1| |#![allow(unused_assignments, unused_variables)] + 2| | + 3| 0|pub fn unused_pub_fn_not_in_library() { + 4| 0| // Initialize test constants in a way that cannot be determined at compile time, to ensure + 5| 0| // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from + 6| 0| // dependent conditions. + 7| 0| let is_true = std::env::args().len() == 1; + 8| 0| + 9| 0| let mut countdown = 0; + 10| 0| if is_true { + 11| 0| countdown = 10; + 12| 0| } + 13| 0|} + 14| | + 15| 0|fn unused_fn() { + 16| 0| // Initialize test constants in a way that cannot be determined at compile time, to ensure + 17| 0| // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from + 18| 0| // dependent conditions. + 19| 0| let is_true = std::env::args().len() == 1; + 20| 0| + 21| 0| let mut countdown = 0; + 22| 0| if is_true { + 23| 0| countdown = 10; + 24| 0| } + 25| 0|} + 26| | + 27| 1|fn main() { + 28| 1| // Initialize test constants in a way that cannot be determined at compile time, to ensure + 29| 1| // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from + 30| 1| // dependent conditions. + 31| 1| let is_true = std::env::args().len() == 1; + 32| 1| + 33| 1| let mut countdown = 0; + 34| 1| if is_true { + 35| 1| countdown = 10; + 36| 1| } + ^0 + 37| 1|} + diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.drop_trait.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.drop_trait.txt index 72aa020ca16..fab5be41901 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.drop_trait.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.drop_trait.txt @@ -11,11 +11,11 @@ 11| 2| } 12| |} 13| | - 14| |fn main() -> Result<(),u8> { + 14| 1|fn main() -> Result<(),u8> { 15| 1| let _firecracker = Firework { strength: 1 }; 16| 1| 17| 1| let _tnt = Firework { strength: 100 }; - 18| | + 18| 1| 19| 1| if true { 20| 1| println!("Exiting with error..."); 21| 1| return Err(1); diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.generics.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.generics.txt index 86199d74763..7b38ffb87cb 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.generics.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.generics.txt @@ -41,27 +41,31 @@ ------------------ 20| |} 21| | - 22| |fn main() -> Result<(),u8> { + 22| 1|fn main() -> Result<(),u8> { 23| 1| let mut firecracker = Firework { strength: 1 }; 24| 1| firecracker.set_strength(2); 25| 1| 26| 1| let mut tnt = Firework { strength: 100.1 }; 27| 1| tnt.set_strength(200.1); 28| 1| tnt.set_strength(300.3); - 29| | + 29| 1| 30| 1| if true { 31| 1| println!("Exiting with error..."); 32| 1| return Err(1); - 33| | } - 34| | - 35| | let _ = Firework { strength: 1000 }; - 36| | - 37| | Ok(()) - 38| 1|} - 39| | - 40| |// Expected program output: - 41| |// Exiting with error... - 42| |// BOOM times 100!!! - 43| |// BOOM times 1!!! - 44| |// Error: 1 + 33| | } // The remaining lines below have no coverage because `if true` (with the constant literal + 34| | // `true`) is guaranteed to execute the `then` block, which is also guaranteed to `return`. + 35| | // Thankfully, in the normal case, conditions are not guaranteed ahead of time, and as shown + 36| | // in other tests, the lines below would have coverage (which would show they had `0` + 37| | // executions, assuming the condition still evaluated to `true`). + 38| | + 39| | let _ = Firework { strength: 1000 }; + 40| | + 41| | Ok(()) + 42| 1|} + 43| | + 44| |// Expected program output: + 45| |// Exiting with error... + 46| |// BOOM times 100!!! + 47| |// BOOM times 1!!! + 48| |// Error: 1 diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.if.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.if.txt index 85e6440ab37..0c9eff227ed 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.if.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.if.txt @@ -1,10 +1,10 @@ 1| |#![allow(unused_assignments, unused_variables)] 2| | - 3| |fn main() { - 4| | // Initialize test constants in a way that cannot be determined at compile time, to ensure - 5| | // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from - 6| | // dependent conditions. - 7| | let + 3| 1|fn main() { + 4| 1| // Initialize test constants in a way that cannot be determined at compile time, to ensure + 5| 1| // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from + 6| 1| // dependent conditions. + 7| 1| let 8| 1| is_true 9| 1| = 10| 1| std::env::args().len() @@ -16,8 +16,8 @@ 16| 1| countdown 17| 1| = 18| 1| 0 - 19| | ; - 20| | if + 19| 1| ; + 20| 1| if 21| 1| is_true 22| 1| { 23| 1| countdown diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.if_else.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.if_else.txt index 5f899723e25..77113ada103 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.if_else.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.if_else.txt @@ -1,9 +1,9 @@ 1| |#![allow(unused_assignments)] 2| | - 3| |fn main() { - 4| | // Initialize test constants in a way that cannot be determined at compile time, to ensure - 5| | // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from - 6| | // dependent conditions. + 3| 1|fn main() { + 4| 1| // Initialize test constants in a way that cannot be determined at compile time, to ensure + 5| 1| // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from + 6| 1| // dependent conditions. 7| 1| let is_true = std::env::args().len() == 1; 8| 1| 9| 1| let mut countdown = 0; diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.inner_items.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.inner_items.txt index efd9cd4f72d..db2a19ac4bf 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.inner_items.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.inner_items.txt @@ -1,6 +1,6 @@ 1| |#![allow(unused_assignments, unused_variables)] 2| | - 3| |fn main() { + 3| 1|fn main() { 4| | // Initialize test constants in a way that cannot be determined at compile time, to ensure 5| | // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from 6| | // dependent conditions. @@ -16,7 +16,7 @@ 15| | const IN_MOD_CONST: u32 = 1000; 16| | } 17| | - 18| | fn in_func(a: u32) { + 18| 3| fn in_func(a: u32) { 19| 3| let b = 1; 20| 3| let c = a + b; 21| 3| println!("c = {}", c) diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.lazy_boolean.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.lazy_boolean.txt index 1b503033911..bd349df2fbc 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.lazy_boolean.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.lazy_boolean.txt @@ -1,9 +1,9 @@ 1| |#![allow(unused_assignments, unused_variables)] 2| | - 3| |fn main() { - 4| | // Initialize test constants in a way that cannot be determined at compile time, to ensure - 5| | // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from - 6| | // dependent conditions. + 3| 1|fn main() { + 4| 1| // Initialize test constants in a way that cannot be determined at compile time, to ensure + 5| 1| // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from + 6| 1| // dependent conditions. 7| 1| let is_true = std::env::args().len() == 1; 8| 1| 9| 1| let (mut a, mut b, mut c) = (0, 0, 0); @@ -18,8 +18,7 @@ 17| | = 18| 1| a < b 19| | || - 20| 1| b < c - ^0 + 20| 0| b < c 21| | ; 22| | let 23| 1| somebool diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.loops_branches.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.loops_branches.txt index 3a969a6b898..135b7b67034 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.loops_branches.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.loops_branches.txt @@ -6,7 +6,7 @@ 6| |struct DebugTest; 7| | 8| |impl std::fmt::Debug for DebugTest { - 9| | fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + 9| 1| fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { 10| 1| if true { 11| 1| if false { 12| | while true { @@ -15,7 +15,7 @@ 15| 1| write!(f, "error")?; ^0 16| | } else { - 17| 1| } + 17| | } 18| 1| Ok(()) 19| 1| } 20| |} diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.nested_loops.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.nested_loops.txt index dd86a85815b..0dbd6bcf313 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.nested_loops.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.nested_loops.txt @@ -1,4 +1,4 @@ - 1| |fn main() { + 1| 1|fn main() { 2| 1| let is_true = std::env::args().len() == 1; 3| 1| let mut countdown = 10; 4| | @@ -8,7 +8,7 @@ 8| 3| for _ in 0..50 { 9| 3| if a < 30 { 10| 0| break; - 11| | } + 11| 3| } 12| 3| a -= 5; 13| 3| b -= 5; 14| 3| if b < 90 { @@ -19,8 +19,8 @@ 19| 0| a -= 2; 20| 0| } 21| 2| } - 22| 2| } + 22| | } 23| 0| countdown -= 1; - 24| 0| } + 24| | } 25| 1|} diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.overflow.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.overflow.txt index 322de1da25a..4dccb3413ea 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.overflow.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.overflow.txt @@ -1,7 +1,7 @@ 1| |#![allow(unused_assignments)] 2| |// expect-exit-status-101 3| | - 4| |fn might_overflow(to_add: u32) -> u32 { + 4| 4|fn might_overflow(to_add: u32) -> u32 { 5| 4| if to_add > 5 { 6| 1| println!("this will probably overflow"); 7| 3| } @@ -12,7 +12,7 @@ 12| 4| result 13| 4|} 14| | - 15| |fn main() -> Result<(),u8> { + 15| 1|fn main() -> Result<(),u8> { 16| 1| let mut countdown = 10; 17| 10| while countdown > 0 { 18| 10| if countdown == 1 { @@ -21,7 +21,7 @@ 21| 10| } else if countdown < 5 { 22| 3| let result = might_overflow(1); 23| 3| println!("Result: {}", result); - 24| 15| } + 24| 6| } 25| 9| countdown -= 1; 26| | } 27| 0| Ok(()) diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.panic_unwind.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.panic_unwind.txt index f5149c11b7b..9ae78fee4b5 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.panic_unwind.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.panic_unwind.txt @@ -1,7 +1,7 @@ 1| |#![allow(unused_assignments)] 2| |// expect-exit-status-101 3| | - 4| |fn might_panic(should_panic: bool) { + 4| 4|fn might_panic(should_panic: bool) { 5| 4| if should_panic { 6| 1| println!("panicking..."); 7| 1| panic!("panics"); @@ -10,14 +10,14 @@ 10| 3| } 11| 3|} 12| | - 13| |fn main() -> Result<(),u8> { + 13| 1|fn main() -> Result<(), u8> { 14| 1| let mut countdown = 10; 15| 10| while countdown > 0 { 16| 10| if countdown == 1 { 17| 0| might_panic(true); 18| 10| } else if countdown < 5 { 19| 3| might_panic(false); - 20| 15| } + 20| 6| } 21| 9| countdown -= 1; 22| | } 23| 0| Ok(()) @@ -42,9 +42,9 @@ 42| |// 5. The reason the coverage results actually show `panic!()` was called is most likely because 43| |// `panic!()` is a macro, not a simple function call, and there are other `Statement`s and/or 44| |// `Terminator`s that execute with a coverage counter before the panic and unwind occur. - 45| |// 6. By best practice, programs should not panic. By design, the coverage implementation will not - 46| |// incur additional cost (in program size and execution time) to improve coverage results for - 47| |// an event that is not supposted to happen. + 45| |// 6. Since the common practice is not to use `panic!()` for error handling, the coverage + 46| |// implementation avoids incurring an additional cost (in program size and execution time) to + 47| |// improve coverage results for an event that is generally not "supposed" to happen. 48| |// 7. FIXME(#78544): This issue describes a feature request for a proposed option to enable 49| |// more accurate coverage results for tests that intentionally panic. diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.partial_eq.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.partial_eq.txt index 310bf13a695..c05cb36cd02 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.partial_eq.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.partial_eq.txt @@ -2,15 +2,15 @@ 2| |// structure of this test. 3| | 4| 2|#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] - ^1 ^1 + ^0 ^0 ^0 ^0 ^1 ^0 ^0^0 5| |pub struct Version { 6| | major: usize, - 7| 1| minor: usize, - 8| | patch: usize, + 7| 1| minor: usize, // Count: 1 - `PartialOrd` compared `minor` values in 3.2.1 vs. 3.3.0 + 8| 0| patch: usize, // Count: 0 - `PartialOrd` was determined by `minor` (2 < 3) 9| |} 10| | 11| |impl Version { - 12| | pub fn new(major: usize, minor: usize, patch: usize) -> Self { + 12| 2| pub fn new(major: usize, minor: usize, patch: usize) -> Self { 13| 2| Self { 14| 2| major, 15| 2| minor, @@ -45,57 +45,4 @@ 44| |`function_source_hash` without a code region, if necessary. 45| | 46| |*/ - 47| | - 48| |// FIXME(richkadel): It may be worth investigating why the coverage report for this test produces - 49| |// the following results: - 50| | - 51| |/* - 52| | - 53| |1. Why are their two counts below different characters (first and last) of `PartialOrd`, on line 17? - 54| | - 55| |2. Line 17 is counted twice, but the `::lt` instance shows a line count of 1? Is there a missing - 56| | line count with a different instance? Or was it really only called once? - 57| | - 58| |3. Line 20 shows another line count (of 1) for a line within a `struct` declaration (on only one of - 59| | its 3 fields). I doubt the specific field (`minor`) is relevant, but rather I suspect there's a - 60| | problem computing the file position here, for some reason. - 61| | - 62| | - 63| | 16| | - 64| | 17| 2|#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] - 65| | ^1 ^1 - 66| |------------------ - 67| ||Unexecuted instantiation: ::gt - 68| |------------------ - 69| ||Unexecuted instantiation: ::le - 70| |------------------ - 71| ||Unexecuted instantiation: ::ge - 72| |------------------ - 73| ||::lt: - 74| || 17| 1|#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] - 75| |------------------ - 76| | 18| |pub struct Version { - 77| | 19| | major: usize, - 78| | 20| 1| minor: usize, - 79| | 21| | patch: usize, - 80| | 22| |} - 81| | 23| | - 82| | 24| |impl Version { - 83| | 25| | pub fn new(major: usize, minor: usize, patch: usize) -> Self { - 84| | 26| 2| Version { - 85| | 27| 2| major, - 86| | 28| 2| minor, - 87| | 29| 2| patch, - 88| | 30| 2| } - 89| | 31| 2| } - 90| | 32| |} - 91| | 33| | - 92| | 34| 1|fn main() { - 93| | 35| 1| let version_3_2_1 = Version::new(3, 2, 1); - 94| | 36| 1| let version_3_3_0 = Version::new(3, 3, 0); - 95| | 37| 1| - 96| | 38| 1| println!("{:?} < {:?} = {}", version_3_2_1, version_3_3_0, version_3_2_1 < version - 97| |_3_3_0); - 98| | 39| 1|} - 99| |*/ diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.simple_loop.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.simple_loop.txt index 064930dd75c..feb83bad674 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.simple_loop.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.simple_loop.txt @@ -1,14 +1,14 @@ 1| |#![allow(unused_assignments)] 2| | - 3| |fn main() { - 4| | // Initialize test constants in a way that cannot be determined at compile time, to ensure - 5| | // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from - 6| | // dependent conditions. + 3| 1|fn main() { + 4| 1| // Initialize test constants in a way that cannot be determined at compile time, to ensure + 5| 1| // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from + 6| 1| // dependent conditions. 7| 1| let is_true = std::env::args().len() == 1; 8| 1| 9| 1| let mut countdown = 0; - 10| | - 11| | if + 10| 1| + 11| 1| if 12| 1| is_true 13| 1| { 14| 1| countdown @@ -27,11 +27,11 @@ 26| | { 27| 1| break 28| | ; - 29| | } + 29| 10| } 30| 10| countdown 31| 10| -= 32| 10| 1 33| | ; - 34| 1| } + 34| | } 35| 1|} diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.simple_match.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.simple_match.txt index 1f7e71d3eb0..336853b96f3 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.simple_match.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.simple_match.txt @@ -1,9 +1,9 @@ 1| |#![allow(unused_assignments)] 2| | - 3| |fn main() { - 4| | // Initialize test constants in a way that cannot be determined at compile time, to ensure - 5| | // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from - 6| | // dependent conditions. + 3| 1|fn main() { + 4| 1| // Initialize test constants in a way that cannot be determined at compile time, to ensure + 5| 1| // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from + 6| 1| // dependent conditions. 7| 1| let is_true = std::env::args().len() == 1; 8| 1| 9| 1| let mut countdown = 1; @@ -27,7 +27,6 @@ 26| 2| x 27| 2| < 28| 2| 1 - ^1 29| | => 30| 1| { 31| 1| z = countdown @@ -41,6 +40,6 @@ 39| | => 40| 1| {} 41| | } - 42| 3| } + 42| | } 43| 1|} diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.tight_inf_loop.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.tight_inf_loop.txt index e02eac03a6b..5adeef7d085 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.tight_inf_loop.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.tight_inf_loop.txt @@ -1,6 +1,6 @@ - 1| |fn main() { + 1| 1|fn main() { 2| 1| if false { 3| | loop {} - 4| | } + 4| 1| } 5| 1|} diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.try_error_result.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.try_error_result.txt index 6b3a8c39c63..c9ebffde039 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.try_error_result.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.try_error_result.txt @@ -1,7 +1,7 @@ 1| |#![allow(unused_assignments)] 2| |// expect-exit-status-1 3| | - 4| |fn call(return_error: bool) -> Result<(),()> { + 4| 6|fn call(return_error: bool) -> Result<(),()> { 5| 6| if return_error { 6| 1| Err(()) 7| | } else { @@ -9,7 +9,7 @@ 9| | } 10| 6|} 11| | - 12| |fn main() -> Result<(),()> { + 12| 1|fn main() -> Result<(),()> { 13| 1| let mut 14| 1| countdown = 10 15| | ; @@ -31,8 +31,8 @@ 31| | { 32| 5| call(/*return_error=*/ false)?; ^0 - 33| 5| } - 34| 5| } + 33| | } + 34| | } 35| 0| Ok(()) 36| 1|} diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.while.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.while.txt index 194325b6b9e..efa7d083f0c 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.while.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.while.txt @@ -1,4 +1,4 @@ - 1| |fn main() { + 1| 1|fn main() { 2| 1| let num = 9; 3| 1| while num >= 10 { 4| 0| } diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.while_early_ret.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.while_early_ret.txt index 26041136d2f..d19afc0de61 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.while_early_ret.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.while_early_ret.txt @@ -1,7 +1,7 @@ 1| |#![allow(unused_assignments)] 2| |// expect-exit-status-1 3| | - 4| |fn main() -> Result<(),u8> { + 4| 1|fn main() -> Result<(),u8> { 5| 1| let mut countdown = 10; 6| | while 7| 7| countdown @@ -26,7 +26,7 @@ 26| 1| Err(1) 27| | } 28| | ; - 29| | } + 29| 6| } 30| 6| countdown 31| 6| -= 32| 6| 1 @@ -40,9 +40,4 @@ 40| |// and MacOS. But on Windows (MSVC, at least), the call to `std::process::exit()` exits the program 41| |// without saving the InstrProf coverage counters. The use of `std::process:exit()` is not critical 42| |// to the coverage test for early returns, but this is a limitation that should be fixed. - 43| |// - 44| |// FIXME(richkadel): Consider creating a new tests for coverage when calling `std::process::exit()`, - 45| |// move the `ISSUE` comment to that test, and implement a new test directive that supports skipping - 46| |// coverage tests when targeting specific platforms (at least skipping Windows, or MSVC if the - 47| |// problem exists on MSVC only). diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.yield.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.yield.txt index 28813dd6d0b..6e2f23ee77b 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.yield.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.yield.txt @@ -4,7 +4,7 @@ 4| |use std::ops::{Generator, GeneratorState}; 5| |use std::pin::Pin; 6| | - 7| |fn main() { + 7| 1|fn main() { 8| 1| let mut generator = || { 9| 1| yield 1; 10| 1| return "foo" diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.abort.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.abort.txt index e787e5e152d..cbf7462eba5 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.abort.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.abort.txt @@ -1,32 +1,48 @@ -Counter in file 0 15:9 -> 15:27, #1 +Counter in file 0 14:1 -> 15:27, #1 Counter in file 0 16:11 -> 16:24, (#1 + (#2 + #3)) Counter in file 0 17:12 -> 17:25, ((#1 + (#2 + #3)) - #4) -Counter in file 0 17:26 -> 19:10, #2 -Counter in file 0 19:10 -> 19:11, #3 -Counter in file 0 20:9 -> 20:23, (#2 + #3) -Counter in file 0 22:5 -> 23:2, #4 -Counter in file 0 6:8 -> 6:20, #1 +Counter in file 0 17:26 -> 19:10, #5 +Counter in file 0 19:10 -> 19:11, (((#1 + (#2 + #3)) - #4) - #5) +Counter in file 0 21:12 -> 21:25, (#5 + (((#1 + (#2 + #3)) - #4) - #5)) +Counter in file 0 21:26 -> 21:49, #6 +Counter in file 0 21:49 -> 21:50, ((#5 + (((#1 + (#2 + #3)) - #4) - #5)) - #6) +Counter in file 0 25:12 -> 25:25, (#6 + ((#5 + (((#1 + (#2 + #3)) - #4) - #5)) - #6)) +Counter in file 0 25:26 -> 25:49, #2 +Counter in file 0 25:49 -> 25:50, #3 +Counter in file 0 26:9 -> 26:23, (#2 + #3) +Counter in file 0 28:5 -> 29:2, #4 +Counter in file 0 5:1 -> 5:36, #1 +Counter in file 0 6:8 -> 6:20, (#1 + 0) Counter in file 0 7:9 -> 8:37, #2 Counter in file 0 9:12 -> 12:2, (#1 - #2) Emitting segments for file: ../coverage/abort.rs Combined regions: - 6:8 -> 6:20 (count=4) + 5:1 -> 5:36 (count=12) + 6:8 -> 6:20 (count=12) 7:9 -> 8:37 (count=0) - 9:12 -> 12:2 (count=4) - 15:9 -> 15:27 (count=1) + 9:12 -> 12:2 (count=12) + 14:1 -> 15:27 (count=1) 16:11 -> 16:24 (count=11) 17:12 -> 17:25 (count=10) 17:26 -> 19:10 (count=4) 19:10 -> 19:11 (count=6) - 20:9 -> 20:23 (count=10) - 22:5 -> 23:2 (count=1) -Segment at 6:8 (count = 4), RegionEntry + 21:12 -> 21:25 (count=10) + 21:26 -> 21:49 (count=4) + 21:49 -> 21:50 (count=6) + 25:12 -> 25:25 (count=10) + 25:26 -> 25:49 (count=4) + 25:49 -> 25:50 (count=6) + 26:9 -> 26:23 (count=10) + 28:5 -> 29:2 (count=1) +Segment at 5:1 (count = 12), RegionEntry +Segment at 5:36 (count = 0), Skipped +Segment at 6:8 (count = 12), RegionEntry Segment at 6:20 (count = 0), Skipped Segment at 7:9 (count = 0), RegionEntry Segment at 8:37 (count = 0), Skipped -Segment at 9:12 (count = 4), RegionEntry +Segment at 9:12 (count = 12), RegionEntry Segment at 12:2 (count = 0), Skipped -Segment at 15:9 (count = 1), RegionEntry +Segment at 14:1 (count = 1), RegionEntry Segment at 15:27 (count = 0), Skipped Segment at 16:11 (count = 11), RegionEntry Segment at 16:24 (count = 0), Skipped @@ -35,7 +51,17 @@ Segment at 17:25 (count = 0), Skipped Segment at 17:26 (count = 4), RegionEntry Segment at 19:10 (count = 6), RegionEntry Segment at 19:11 (count = 0), Skipped -Segment at 20:9 (count = 10), RegionEntry -Segment at 20:23 (count = 0), Skipped -Segment at 22:5 (count = 1), RegionEntry -Segment at 23:2 (count = 0), Skipped +Segment at 21:12 (count = 10), RegionEntry +Segment at 21:25 (count = 0), Skipped +Segment at 21:26 (count = 4), RegionEntry +Segment at 21:49 (count = 6), RegionEntry +Segment at 21:50 (count = 0), Skipped +Segment at 25:12 (count = 10), RegionEntry +Segment at 25:25 (count = 0), Skipped +Segment at 25:26 (count = 4), RegionEntry +Segment at 25:49 (count = 6), RegionEntry +Segment at 25:50 (count = 0), Skipped +Segment at 26:9 (count = 10), RegionEntry +Segment at 26:23 (count = 0), Skipped +Segment at 28:5 (count = 1), RegionEntry +Segment at 29:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.assert.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.assert.txt index 81cb6c03da7..916ebbbcc29 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.assert.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.assert.txt @@ -1,32 +1,35 @@ -Counter in file 0 10:9 -> 10:27, #1 +Counter in file 0 9:1 -> 10:27, #1 Counter in file 0 11:11 -> 11:24, (#1 + (#2 + (#3 + #4))) Counter in file 0 12:12 -> 12:26, ((#1 + (#2 + (#3 + #4))) - #5) Counter in file 0 12:27 -> 14:10, #2 Counter in file 0 14:19 -> 14:32, (((#1 + (#2 + (#3 + #4))) - #5) - #2) Counter in file 0 14:33 -> 16:10, #3 Counter in file 0 16:10 -> 16:11, #4 -Counter in file 0 16:10 -> 16:11, (#3 + #4) Counter in file 0 17:9 -> 17:23, (#2 + (#3 + #4)) Counter in file 0 19:5 -> 20:2, #5 -Counter in file 0 5:5 -> 5:48, #1 +Counter in file 0 4:1 -> 4:41, #1 +Counter in file 0 5:5 -> 5:48, (#1 + 0) Counter in file 0 6:16 -> 6:21, (#1 + 0) Counter in file 0 6:37 -> 6:61, #2 Counter in file 0 7:1 -> 7:2, (#1 - #2) Emitting segments for file: ../coverage/assert.rs Combined regions: + 4:1 -> 4:41 (count=4) 5:5 -> 5:48 (count=4) 6:16 -> 6:21 (count=4) 6:37 -> 6:61 (count=1) 7:1 -> 7:2 (count=3) - 10:9 -> 10:27 (count=1) + 9:1 -> 10:27 (count=1) 11:11 -> 11:24 (count=10) 12:12 -> 12:26 (count=10) 12:27 -> 14:10 (count=0) 14:19 -> 14:32 (count=10) 14:33 -> 16:10 (count=3) - 16:10 -> 16:11 (count=15) + 16:10 -> 16:11 (count=6) 17:9 -> 17:23 (count=9) 19:5 -> 20:2 (count=0) +Segment at 4:1 (count = 4), RegionEntry +Segment at 4:41 (count = 0), Skipped Segment at 5:5 (count = 4), RegionEntry Segment at 5:48 (count = 0), Skipped Segment at 6:16 (count = 4), RegionEntry @@ -35,7 +38,7 @@ Segment at 6:37 (count = 1), RegionEntry Segment at 6:61 (count = 0), Skipped Segment at 7:1 (count = 3), RegionEntry Segment at 7:2 (count = 0), Skipped -Segment at 10:9 (count = 1), RegionEntry +Segment at 9:1 (count = 1), RegionEntry Segment at 10:27 (count = 0), Skipped Segment at 11:11 (count = 10), RegionEntry Segment at 11:24 (count = 0), Skipped @@ -46,7 +49,7 @@ Segment at 14:10 (count = 0), Skipped Segment at 14:19 (count = 10), RegionEntry Segment at 14:32 (count = 0), Skipped Segment at 14:33 (count = 3), RegionEntry -Segment at 16:10 (count = 15), RegionEntry +Segment at 16:10 (count = 6), RegionEntry Segment at 16:11 (count = 0), Skipped Segment at 17:9 (count = 9), RegionEntry Segment at 17:23 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.async.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.async.txt index 0490a319856..ce6ee3b1ed8 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.async.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.async.txt @@ -1,84 +1,304 @@ -Counter in file 0 15:9 -> 15:75, #1 -Counter in file 0 15:9 -> 15:75, #1 -Counter in file 0 15:9 -> 15:75, #1 -Counter in file 0 47:13 -> 56:54, #1 -Counter in file 0 59:32 -> 59:35, ((#1 + #2) - #2) -Counter in file 0 59:39 -> 59:73, (#1 + #2) -Counter in file 0 60:23 -> 60:26, (((#1 + #2) - #2) + 0) -Counter in file 0 62:10 -> 62:11, #2 -Counter in file 0 63:5 -> 63:6, (((#1 + #2) - #2) + 0) -Counter in file 0 53:17 -> 53:19, #1 -Counter in file 0 30:1 -> 30:2, #1 -Counter in file 0 5:24 -> 5:25, #1 -Counter in file 0 14:1 -> 14:2, #1 -Counter in file 0 5:22 -> 5:25, #1 -Counter in file 0 25:19 -> 26:12, #1 -Counter in file 0 27:9 -> 27:10, #3 -Counter in file 0 27:14 -> 27:17, (#1 + 0) -Counter in file 0 27:27 -> 27:32, #2 -Counter in file 0 27:32 -> 27:33, (#2 - #3) -Counter in file 0 27:36 -> 27:38, (#3 + 0) -Counter in file 0 28:14 -> 28:16, #4 -Counter in file 0 30:1 -> 30:2, (#3 + #4) -Counter in file 0 23:1 -> 23:2, #1 -Counter in file 0 32:11 -> 37:2, #1 +Counter in file 0 13:1 -> 13:20, #1 +Counter in file 0 15:1 -> 15:20, 0 +Counter in file 0 15:20 -> 15:21, 0 +Counter in file 0 19:1 -> 19:30, 0 +Counter in file 0 19:30 -> 19:31, 0 +Counter in file 0 21:23 -> 22:12, 0 +Counter in file 0 23:9 -> 23:10, 0 +Counter in file 0 23:14 -> 23:17, 0 +Counter in file 0 23:27 -> 23:28, 0 +Counter in file 0 23:32 -> 23:34, 0 +Counter in file 0 24:9 -> 24:10, 0 +Counter in file 0 24:14 -> 24:17, 0 +Counter in file 0 24:27 -> 24:28, 0 +Counter in file 0 24:32 -> 24:34, 0 +Counter in file 0 25:14 -> 25:16, 0 +Counter in file 0 27:1 -> 27:2, 0 +Counter in file 0 29:22 -> 32:12, 0 +Counter in file 0 33:9 -> 33:10, 0 +Counter in file 0 33:14 -> 33:19, 0 +Counter in file 0 33:26 -> 33:27, 0 +Counter in file 0 33:32 -> 33:34, 0 +Counter in file 0 34:14 -> 34:16, 0 +Counter in file 0 36:1 -> 36:2, 0 +Counter in file 0 75:1 -> 76:12, 0 +Counter in file 0 77:14 -> 77:16, 0 +Counter in file 0 78:14 -> 78:16, 0 +Counter in file 0 79:14 -> 79:16, 0 +Counter in file 0 81:1 -> 81:2, 0 +Counter in file 0 5:1 -> 5:25, #1 +Counter in file 0 21:1 -> 21:23, #1 +Counter in file 0 17:20 -> 17:21, #1 +Counter in file 0 67:5 -> 67:23, #1 +Counter in file 0 38:1 -> 38:19, #1 +Counter in file 0 13:20 -> 13:21, #1 +Counter in file 0 29:1 -> 29:22, #1 +Counter in file 0 91:1 -> 98:2, #1 +Counter in file 0 5:25 -> 6:14, #1 +Counter in file 0 7:9 -> 7:10, #2 +Counter in file 0 9:9 -> 9:10, (#1 - #2) +Counter in file 0 11:1 -> 11:2, (#2 + (#1 - #2)) +Counter in file 0 38:19 -> 42:12, #1 +Counter in file 0 43:9 -> 43:10, #3 +Counter in file 0 43:14 -> 43:18, (#1 + 0) +Counter in file 0 43:28 -> 43:33, #2 +Counter in file 0 43:39 -> 43:42, (#3 + 0) +Counter in file 0 44:9 -> 44:10, #6 +Counter in file 0 44:14 -> 44:17, #4 +Counter in file 0 44:27 -> 44:32, #8 +Counter in file 0 44:36 -> 44:38, (#6 + 0) +Counter in file 0 45:14 -> 45:16, #7 +Counter in file 0 47:1 -> 47:2, (#5 + (#6 + #7)) +Counter in file 0 51:5 -> 52:18, #1 +Counter in file 0 53:13 -> 53:14, #2 +Counter in file 0 63:13 -> 63:14, (#1 - #2) +Counter in file 0 65:5 -> 65:6, (#2 + (#1 - #2)) +Counter in file 0 49:1 -> 68:12, #1 +Counter in file 0 69:9 -> 69:10, #2 +Counter in file 0 69:14 -> 69:27, (#1 + 0) +Counter in file 0 69:31 -> 69:39, (#2 + 0) +Counter in file 0 70:9 -> 70:10, #3 +Counter in file 0 70:14 -> 70:26, #5 +Counter in file 0 70:30 -> 70:32, (#3 + 0) +Counter in file 0 71:14 -> 71:16, #4 +Counter in file 0 73:1 -> 73:2, (#2 + (#3 + #4)) +Counter in file 0 83:1 -> 84:12, #1 +Counter in file 0 85:14 -> 85:16, (#1 - (#3 + #2)) +Counter in file 0 86:14 -> 86:16, #2 +Counter in file 0 87:14 -> 87:16, #3 +Counter in file 0 89:1 -> 89:2, (#3 + (#2 + (#1 - (#3 + #2)))) +Counter in file 0 17:1 -> 17:20, #1 +Counter in file 0 66:5 -> 66:23, #1 +Counter in file 0 107:5 -> 117:54, #1 +Counter in file 0 120:32 -> 120:35, ((#1 + #2) - #2) +Counter in file 0 120:39 -> 120:73, (#1 + #2) +Counter in file 0 121:23 -> 121:26, (((#1 + #2) - #2) + 0) +Counter in file 0 122:14 -> 122:15, #2 +Counter in file 0 124:5 -> 124:6, (((#1 + #2) - #2) + 0) +Counter in file 0 114:17 -> 114:19, #1 +Counter in file 0 17:9 -> 17:10, #1 +Counter in file 0 17:9 -> 17:10, #1 +Counter in file 0 17:9 -> 17:10, #1 Emitting segments for file: ../coverage/async.rs Combined regions: - 5:22 -> 5:25 (count=1) - 5:24 -> 5:25 (count=1) - 14:1 -> 14:2 (count=1) - 23:1 -> 23:2 (count=1) - 25:19 -> 26:12 (count=1) - 27:9 -> 27:10 (count=0) - 27:14 -> 27:17 (count=1) - 27:27 -> 27:32 (count=1) - 27:32 -> 27:33 (count=1) - 27:36 -> 27:38 (count=0) - 28:14 -> 28:16 (count=1) - 30:1 -> 30:2 (count=2) - 32:11 -> 37:2 (count=1) - 47:13 -> 56:54 (count=1) - 53:17 -> 53:19 (count=1) - 59:32 -> 59:35 (count=1) - 59:39 -> 59:73 (count=1) - 60:23 -> 60:26 (count=1) - 62:10 -> 62:11 (count=0) - 63:5 -> 63:6 (count=1) -Segment at 5:22 (count = 1), RegionEntry -Segment at 5:24 (count = 1), RegionEntry -Segment at 5:25 (count = 0), Skipped -Segment at 14:1 (count = 1), RegionEntry -Segment at 14:2 (count = 0), Skipped -Segment at 23:1 (count = 1), RegionEntry -Segment at 23:2 (count = 0), Skipped -Segment at 25:19 (count = 1), RegionEntry -Segment at 26:12 (count = 0), Skipped -Segment at 27:9 (count = 0), RegionEntry -Segment at 27:10 (count = 0), Skipped -Segment at 27:14 (count = 1), RegionEntry -Segment at 27:17 (count = 0), Skipped -Segment at 27:27 (count = 1), RegionEntry -Segment at 27:32 (count = 1), RegionEntry -Segment at 27:33 (count = 0), Skipped -Segment at 27:36 (count = 0), RegionEntry -Segment at 27:38 (count = 0), Skipped -Segment at 28:14 (count = 1), RegionEntry -Segment at 28:16 (count = 0), Skipped -Segment at 30:1 (count = 2), RegionEntry -Segment at 30:2 (count = 0), Skipped -Segment at 32:11 (count = 1), RegionEntry -Segment at 37:2 (count = 0), Skipped -Segment at 47:13 (count = 1), RegionEntry -Segment at 53:17 (count = 1), RegionEntry -Segment at 53:19 (count = 1) -Segment at 56:54 (count = 0), Skipped -Segment at 59:32 (count = 1), RegionEntry -Segment at 59:35 (count = 0), Skipped -Segment at 59:39 (count = 1), RegionEntry -Segment at 59:73 (count = 0), Skipped -Segment at 60:23 (count = 1), RegionEntry -Segment at 60:26 (count = 0), Skipped -Segment at 62:10 (count = 0), RegionEntry -Segment at 62:11 (count = 0), Skipped -Segment at 63:5 (count = 1), RegionEntry -Segment at 63:6 (count = 0), Skipped + 5:1 -> 5:25 (count=1) + 5:25 -> 6:14 (count=1) + 7:9 -> 7:10 (count=1) + 9:9 -> 9:10 (count=0) + 11:1 -> 11:2 (count=1) + 13:1 -> 13:20 (count=0) + 15:1 -> 15:20 (count=0) + 15:20 -> 15:21 (count=0) + 17:1 -> 17:20 (count=1) + 17:20 -> 17:21 (count=1) + 19:1 -> 19:30 (count=0) + 19:30 -> 19:31 (count=0) + 21:1 -> 21:23 (count=1) + 21:23 -> 22:12 (count=0) + 23:9 -> 23:10 (count=0) + 23:14 -> 23:17 (count=0) + 23:27 -> 23:28 (count=0) + 23:32 -> 23:34 (count=0) + 24:9 -> 24:10 (count=0) + 24:14 -> 24:17 (count=0) + 24:27 -> 24:28 (count=0) + 24:32 -> 24:34 (count=0) + 25:14 -> 25:16 (count=0) + 27:1 -> 27:2 (count=0) + 29:1 -> 29:22 (count=1) + 29:22 -> 32:12 (count=0) + 33:9 -> 33:10 (count=0) + 33:14 -> 33:19 (count=0) + 33:26 -> 33:27 (count=0) + 33:32 -> 33:34 (count=0) + 34:14 -> 34:16 (count=0) + 36:1 -> 36:2 (count=0) + 38:1 -> 38:19 (count=1) + 38:19 -> 42:12 (count=1) + 43:9 -> 43:10 (count=0) + 43:14 -> 43:18 (count=1) + 43:28 -> 43:33 (count=1) + 43:39 -> 43:42 (count=0) + 44:9 -> 44:10 (count=0) + 44:14 -> 44:17 (count=1) + 44:27 -> 44:32 (count=1) + 44:36 -> 44:38 (count=0) + 45:14 -> 45:16 (count=1) + 47:1 -> 47:2 (count=1) + 49:1 -> 68:12 (count=1) + 51:5 -> 52:18 (count=1) + 53:13 -> 53:14 (count=0) + 63:13 -> 63:14 (count=1) + 65:5 -> 65:6 (count=1) + 67:5 -> 67:23 (count=1) + 69:9 -> 69:10 (count=0) + 69:14 -> 69:27 (count=1) + 69:31 -> 69:39 (count=0) + 70:9 -> 70:10 (count=0) + 70:14 -> 70:26 (count=1) + 70:30 -> 70:32 (count=0) + 71:14 -> 71:16 (count=1) + 73:1 -> 73:2 (count=1) + 75:1 -> 76:12 (count=0) + 77:14 -> 77:16 (count=0) + 78:14 -> 78:16 (count=0) + 79:14 -> 79:16 (count=0) + 81:1 -> 81:2 (count=0) + 83:1 -> 84:12 (count=1) + 85:14 -> 85:16 (count=0) + 86:14 -> 86:16 (count=0) + 87:14 -> 87:16 (count=1) + 89:1 -> 89:2 (count=1) + 91:1 -> 98:2 (count=1) + 107:5 -> 117:54 (count=1) + 114:17 -> 114:19 (count=1) + 120:32 -> 120:35 (count=1) + 120:39 -> 120:73 (count=1) + 121:23 -> 121:26 (count=1) + 122:14 -> 122:15 (count=0) + 124:5 -> 124:6 (count=1) +Segment at 5:1 (count = 1), RegionEntry +Segment at 5:25 (count = 1), RegionEntry +Segment at 6:14 (count = 0), Skipped +Segment at 7:9 (count = 1), RegionEntry +Segment at 7:10 (count = 0), Skipped +Segment at 9:9 (count = 0), RegionEntry +Segment at 9:10 (count = 0), Skipped +Segment at 11:1 (count = 1), RegionEntry +Segment at 11:2 (count = 0), Skipped +Segment at 13:1 (count = 0), RegionEntry +Segment at 13:20 (count = 0), Skipped +Segment at 15:1 (count = 0), RegionEntry +Segment at 15:20 (count = 0), RegionEntry +Segment at 15:21 (count = 0), Skipped +Segment at 17:1 (count = 1), RegionEntry +Segment at 17:20 (count = 1), RegionEntry +Segment at 17:21 (count = 0), Skipped +Segment at 19:1 (count = 0), RegionEntry +Segment at 19:30 (count = 0), RegionEntry +Segment at 19:31 (count = 0), Skipped +Segment at 21:1 (count = 1), RegionEntry +Segment at 21:23 (count = 0), RegionEntry +Segment at 22:12 (count = 0), Skipped +Segment at 23:9 (count = 0), RegionEntry +Segment at 23:10 (count = 0), Skipped +Segment at 23:14 (count = 0), RegionEntry +Segment at 23:17 (count = 0), Skipped +Segment at 23:27 (count = 0), RegionEntry +Segment at 23:28 (count = 0), Skipped +Segment at 23:32 (count = 0), RegionEntry +Segment at 23:34 (count = 0), Skipped +Segment at 24:9 (count = 0), RegionEntry +Segment at 24:10 (count = 0), Skipped +Segment at 24:14 (count = 0), RegionEntry +Segment at 24:17 (count = 0), Skipped +Segment at 24:27 (count = 0), RegionEntry +Segment at 24:28 (count = 0), Skipped +Segment at 24:32 (count = 0), RegionEntry +Segment at 24:34 (count = 0), Skipped +Segment at 25:14 (count = 0), RegionEntry +Segment at 25:16 (count = 0), Skipped +Segment at 27:1 (count = 0), RegionEntry +Segment at 27:2 (count = 0), Skipped +Segment at 29:1 (count = 1), RegionEntry +Segment at 29:22 (count = 0), RegionEntry +Segment at 32:12 (count = 0), Skipped +Segment at 33:9 (count = 0), RegionEntry +Segment at 33:10 (count = 0), Skipped +Segment at 33:14 (count = 0), RegionEntry +Segment at 33:19 (count = 0), Skipped +Segment at 33:26 (count = 0), RegionEntry +Segment at 33:27 (count = 0), Skipped +Segment at 33:32 (count = 0), RegionEntry +Segment at 33:34 (count = 0), Skipped +Segment at 34:14 (count = 0), RegionEntry +Segment at 34:16 (count = 0), Skipped +Segment at 36:1 (count = 0), RegionEntry +Segment at 36:2 (count = 0), Skipped +Segment at 38:1 (count = 1), RegionEntry +Segment at 38:19 (count = 1), RegionEntry +Segment at 42:12 (count = 0), Skipped +Segment at 43:9 (count = 0), RegionEntry +Segment at 43:10 (count = 0), Skipped +Segment at 43:14 (count = 1), RegionEntry +Segment at 43:18 (count = 0), Skipped +Segment at 43:28 (count = 1), RegionEntry +Segment at 43:33 (count = 0), Skipped +Segment at 43:39 (count = 0), RegionEntry +Segment at 43:42 (count = 0), Skipped +Segment at 44:9 (count = 0), RegionEntry +Segment at 44:10 (count = 0), Skipped +Segment at 44:14 (count = 1), RegionEntry +Segment at 44:17 (count = 0), Skipped +Segment at 44:27 (count = 1), RegionEntry +Segment at 44:32 (count = 0), Skipped +Segment at 44:36 (count = 0), RegionEntry +Segment at 44:38 (count = 0), Skipped +Segment at 45:14 (count = 1), RegionEntry +Segment at 45:16 (count = 0), Skipped +Segment at 47:1 (count = 1), RegionEntry +Segment at 47:2 (count = 0), Skipped +Segment at 49:1 (count = 1), RegionEntry +Segment at 51:5 (count = 1), RegionEntry +Segment at 52:18 (count = 1) +Segment at 53:13 (count = 0), RegionEntry +Segment at 53:14 (count = 1) +Segment at 63:13 (count = 1), RegionEntry +Segment at 63:14 (count = 1) +Segment at 65:5 (count = 1), RegionEntry +Segment at 65:6 (count = 1) +Segment at 67:5 (count = 1), RegionEntry +Segment at 67:23 (count = 1) +Segment at 68:12 (count = 0), Skipped +Segment at 69:9 (count = 0), RegionEntry +Segment at 69:10 (count = 0), Skipped +Segment at 69:14 (count = 1), RegionEntry +Segment at 69:27 (count = 0), Skipped +Segment at 69:31 (count = 0), RegionEntry +Segment at 69:39 (count = 0), Skipped +Segment at 70:9 (count = 0), RegionEntry +Segment at 70:10 (count = 0), Skipped +Segment at 70:14 (count = 1), RegionEntry +Segment at 70:26 (count = 0), Skipped +Segment at 70:30 (count = 0), RegionEntry +Segment at 70:32 (count = 0), Skipped +Segment at 71:14 (count = 1), RegionEntry +Segment at 71:16 (count = 0), Skipped +Segment at 73:1 (count = 1), RegionEntry +Segment at 73:2 (count = 0), Skipped +Segment at 75:1 (count = 0), RegionEntry +Segment at 76:12 (count = 0), Skipped +Segment at 77:14 (count = 0), RegionEntry +Segment at 77:16 (count = 0), Skipped +Segment at 78:14 (count = 0), RegionEntry +Segment at 78:16 (count = 0), Skipped +Segment at 79:14 (count = 0), RegionEntry +Segment at 79:16 (count = 0), Skipped +Segment at 81:1 (count = 0), RegionEntry +Segment at 81:2 (count = 0), Skipped +Segment at 83:1 (count = 1), RegionEntry +Segment at 84:12 (count = 0), Skipped +Segment at 85:14 (count = 0), RegionEntry +Segment at 85:16 (count = 0), Skipped +Segment at 86:14 (count = 0), RegionEntry +Segment at 86:16 (count = 0), Skipped +Segment at 87:14 (count = 1), RegionEntry +Segment at 87:16 (count = 0), Skipped +Segment at 89:1 (count = 1), RegionEntry +Segment at 89:2 (count = 0), Skipped +Segment at 91:1 (count = 1), RegionEntry +Segment at 98:2 (count = 0), Skipped +Segment at 107:5 (count = 1), RegionEntry +Segment at 114:17 (count = 1), RegionEntry +Segment at 114:19 (count = 1) +Segment at 117:54 (count = 0), Skipped +Segment at 120:32 (count = 1), RegionEntry +Segment at 120:35 (count = 0), Skipped +Segment at 120:39 (count = 1), RegionEntry +Segment at 120:73 (count = 0), Skipped +Segment at 121:23 (count = 1), RegionEntry +Segment at 121:26 (count = 0), Skipped +Segment at 122:14 (count = 0), RegionEntry +Segment at 122:15 (count = 0), Skipped +Segment at 124:5 (count = 1), RegionEntry +Segment at 124:6 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.closure.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.closure.txt index fb797796e4e..1aacac0ed25 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.closure.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.closure.txt @@ -1,60 +1,92 @@ -Counter in file 0 20:21 -> 20:38, #1 -Counter in file 0 21:20 -> 21:28, (#1 + 0) -Counter in file 0 21:29 -> 23:18, #2 -Counter in file 0 23:18 -> 23:19, (#1 - #2) -Counter in file 0 24:17 -> 25:14, (#2 + (#1 - #2)) -Counter in file 0 3:11 -> 18:13, #1 +Counter in file 0 98:5 -> 100:20, #1 +Counter in file 0 100:21 -> 102:10, #2 +Counter in file 0 102:10 -> 102:11, (#1 - #2) +Counter in file 0 103:9 -> 104:6, (#2 + (#1 - #2)) +Counter in file 0 123:5 -> 124:20, 0 +Counter in file 0 124:21 -> 126:10, 0 +Counter in file 0 126:10 -> 126:11, 0 +Counter in file 0 127:9 -> 128:6, 0 +Counter in file 0 131:53 -> 131:67, 0 +Counter in file 0 141:59 -> 141:85, 0 +Counter in file 0 143:56 -> 145:6, 0 +Counter in file 0 149:7 -> 149:33, 0 +Counter in file 0 153:7 -> 153:33, 0 +Counter in file 0 3:1 -> 18:13, #1 Counter in file 0 25:14 -> 33:9, (#1 + 0) Counter in file 0 40:6 -> 60:13, (#1 + 0) Counter in file 0 67:14 -> 75:9, (#1 + 0) -Counter in file 0 82:6 -> 93:2, (#1 + 0) -Counter in file 0 77:13 -> 77:30, #1 -Counter in file 0 78:12 -> 78:20, (#1 + 0) -Counter in file 0 78:21 -> 80:10, #2 -Counter in file 0 80:10 -> 80:11, (#1 - #2) -Counter in file 0 81:9 -> 82:6, (#2 + (#1 - #2)) -Counter in file 0 62:21 -> 62:38, #1 -Counter in file 0 63:20 -> 63:28, (#1 + 0) +Counter in file 0 82:6 -> 97:9, (#1 + 0) +Counter in file 0 104:6 -> 120:9, (#1 + 0) +Counter in file 0 128:6 -> 131:33, (#1 + 0) +Counter in file 0 131:67 -> 136:33, (#1 + 0) +Counter in file 0 136:75 -> 141:39, (#1 + 0) +Counter in file 0 141:85 -> 143:36, (#1 + 0) +Counter in file 0 145:6 -> 147:36, (#1 + 0) +Counter in file 0 149:33 -> 151:43, (#1 + 0) +Counter in file 0 153:33 -> 155:2, (#1 + 0) +Counter in file 0 61:13 -> 63:28, #1 Counter in file 0 63:29 -> 65:18, #2 Counter in file 0 65:18 -> 65:19, (#1 - #2) Counter in file 0 66:17 -> 67:14, (#2 + (#1 - #2)) -Counter in file 0 35:13 -> 35:30, #1 -Counter in file 0 36:12 -> 36:20, (#1 + 0) +Counter in file 0 76:5 -> 78:20, #1 +Counter in file 0 78:21 -> 80:10, #2 +Counter in file 0 80:10 -> 80:11, (#1 - #2) +Counter in file 0 81:9 -> 82:6, (#2 + (#1 - #2)) +Counter in file 0 34:5 -> 36:20, #1 Counter in file 0 36:21 -> 38:10, #2 Counter in file 0 38:10 -> 38:11, (#1 - #2) Counter in file 0 39:9 -> 40:6, (#2 + (#1 - #2)) +Counter in file 0 19:13 -> 21:28, #1 +Counter in file 0 21:29 -> 23:18, #2 +Counter in file 0 23:18 -> 23:19, (#1 - #2) +Counter in file 0 24:17 -> 25:14, (#2 + (#1 - #2)) Emitting segments for file: ../coverage/closure.rs Combined regions: - 3:11 -> 18:13 (count=1) - 20:21 -> 20:38 (count=0) - 21:20 -> 21:28 (count=0) + 3:1 -> 18:13 (count=1) + 19:13 -> 21:28 (count=0) 21:29 -> 23:18 (count=0) 23:18 -> 23:19 (count=0) 24:17 -> 25:14 (count=0) 25:14 -> 33:9 (count=1) - 35:13 -> 35:30 (count=0) - 36:12 -> 36:20 (count=0) + 34:5 -> 36:20 (count=0) 36:21 -> 38:10 (count=0) 38:10 -> 38:11 (count=0) 39:9 -> 40:6 (count=0) 40:6 -> 60:13 (count=1) - 62:21 -> 62:38 (count=1) - 63:20 -> 63:28 (count=1) + 61:13 -> 63:28 (count=1) 63:29 -> 65:18 (count=0) 65:18 -> 65:19 (count=1) 66:17 -> 67:14 (count=1) 67:14 -> 75:9 (count=1) - 77:13 -> 77:30 (count=1) - 78:12 -> 78:20 (count=1) + 76:5 -> 78:20 (count=1) 78:21 -> 80:10 (count=0) 80:10 -> 80:11 (count=1) 81:9 -> 82:6 (count=1) - 82:6 -> 93:2 (count=1) -Segment at 3:11 (count = 1), RegionEntry + 82:6 -> 97:9 (count=1) + 98:5 -> 100:20 (count=5) + 100:21 -> 102:10 (count=0) + 102:10 -> 102:11 (count=5) + 103:9 -> 104:6 (count=5) + 104:6 -> 120:9 (count=1) + 123:5 -> 124:20 (count=0) + 124:21 -> 126:10 (count=0) + 126:10 -> 126:11 (count=0) + 127:9 -> 128:6 (count=0) + 128:6 -> 131:33 (count=1) + 131:53 -> 131:67 (count=0) + 131:67 -> 136:33 (count=1) + 136:75 -> 141:39 (count=1) + 141:59 -> 141:85 (count=0) + 141:85 -> 143:36 (count=1) + 143:56 -> 145:6 (count=0) + 145:6 -> 147:36 (count=1) + 149:7 -> 149:33 (count=0) + 149:33 -> 151:43 (count=1) + 153:7 -> 153:33 (count=0) + 153:33 -> 155:2 (count=1) +Segment at 3:1 (count = 1), RegionEntry Segment at 18:13 (count = 0), Skipped -Segment at 20:21 (count = 0), RegionEntry -Segment at 20:38 (count = 0), Skipped -Segment at 21:20 (count = 0), RegionEntry +Segment at 19:13 (count = 0), RegionEntry Segment at 21:28 (count = 0), Skipped Segment at 21:29 (count = 0), RegionEntry Segment at 23:18 (count = 0), RegionEntry @@ -62,9 +94,7 @@ Segment at 23:19 (count = 0), Skipped Segment at 24:17 (count = 0), RegionEntry Segment at 25:14 (count = 1), RegionEntry Segment at 33:9 (count = 0), Skipped -Segment at 35:13 (count = 0), RegionEntry -Segment at 35:30 (count = 0), Skipped -Segment at 36:12 (count = 0), RegionEntry +Segment at 34:5 (count = 0), RegionEntry Segment at 36:20 (count = 0), Skipped Segment at 36:21 (count = 0), RegionEntry Segment at 38:10 (count = 0), RegionEntry @@ -72,9 +102,7 @@ Segment at 38:11 (count = 0), Skipped Segment at 39:9 (count = 0), RegionEntry Segment at 40:6 (count = 1), RegionEntry Segment at 60:13 (count = 0), Skipped -Segment at 62:21 (count = 1), RegionEntry -Segment at 62:38 (count = 0), Skipped -Segment at 63:20 (count = 1), RegionEntry +Segment at 61:13 (count = 1), RegionEntry Segment at 63:28 (count = 0), Skipped Segment at 63:29 (count = 0), RegionEntry Segment at 65:18 (count = 1), RegionEntry @@ -82,13 +110,44 @@ Segment at 65:19 (count = 0), Skipped Segment at 66:17 (count = 1), RegionEntry Segment at 67:14 (count = 1), RegionEntry Segment at 75:9 (count = 0), Skipped -Segment at 77:13 (count = 1), RegionEntry -Segment at 77:30 (count = 0), Skipped -Segment at 78:12 (count = 1), RegionEntry +Segment at 76:5 (count = 1), RegionEntry Segment at 78:20 (count = 0), Skipped Segment at 78:21 (count = 0), RegionEntry Segment at 80:10 (count = 1), RegionEntry Segment at 80:11 (count = 0), Skipped Segment at 81:9 (count = 1), RegionEntry Segment at 82:6 (count = 1), RegionEntry -Segment at 93:2 (count = 0), Skipped +Segment at 97:9 (count = 0), Skipped +Segment at 98:5 (count = 5), RegionEntry +Segment at 100:20 (count = 0), Skipped +Segment at 100:21 (count = 0), RegionEntry +Segment at 102:10 (count = 5), RegionEntry +Segment at 102:11 (count = 0), Skipped +Segment at 103:9 (count = 5), RegionEntry +Segment at 104:6 (count = 1), RegionEntry +Segment at 120:9 (count = 0), Skipped +Segment at 123:5 (count = 0), RegionEntry +Segment at 124:20 (count = 0), Skipped +Segment at 124:21 (count = 0), RegionEntry +Segment at 126:10 (count = 0), RegionEntry +Segment at 126:11 (count = 0), Skipped +Segment at 127:9 (count = 0), RegionEntry +Segment at 128:6 (count = 1), RegionEntry +Segment at 131:33 (count = 0), Skipped +Segment at 131:53 (count = 0), RegionEntry +Segment at 131:67 (count = 1), RegionEntry +Segment at 136:33 (count = 0), Skipped +Segment at 136:75 (count = 1), RegionEntry +Segment at 141:39 (count = 0), Skipped +Segment at 141:59 (count = 0), RegionEntry +Segment at 141:85 (count = 1), RegionEntry +Segment at 143:36 (count = 0), Skipped +Segment at 143:56 (count = 0), RegionEntry +Segment at 145:6 (count = 1), RegionEntry +Segment at 147:36 (count = 0), Skipped +Segment at 149:7 (count = 0), RegionEntry +Segment at 149:33 (count = 1), RegionEntry +Segment at 151:43 (count = 0), Skipped +Segment at 153:7 (count = 0), RegionEntry +Segment at 153:33 (count = 1), RegionEntry +Segment at 155:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.conditions.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.conditions.txt index a4c1a9c0f12..3a9c6a9b92e 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.conditions.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.conditions.txt @@ -1,5 +1,5 @@ -Counter in file 0 4:9 -> 4:26, #1 -Counter in file 0 5:8 -> 5:12, (#1 + 0) +Counter in file 0 3:1 -> 3:11, #1 +Counter in file 0 4:9 -> 5:12, (#1 + 0) Counter in file 0 5:13 -> 7:6, #2 Counter in file 0 10:9 -> 10:10, (#3 + (#12 + #13)) Counter in file 0 10:16 -> 10:29, (#2 + 0) @@ -7,89 +7,65 @@ Counter in file 0 11:9 -> 12:10, #3 Counter in file 0 13:15 -> 13:28, ((#2 + 0) - #3) Counter in file 0 14:12 -> 14:25, #4 Counter in file 0 14:29 -> 14:42, (#4 - #15) -Counter in file 0 14:42 -> 14:43, ((#4 - #15) - #16) -Counter in file 0 14:42 -> 14:43, (#15 + #16) -Counter in file 0 14:46 -> 14:60, #23 -Counter in file 0 14:60 -> 14:61, (#18 + #19) -Counter in file 0 14:60 -> 14:61, (#23 - #19) +Counter in file 0 14:46 -> 14:60, #21 Counter in file 0 14:61 -> 16:10, #12 Counter in file 0 16:10 -> 16:11, #13 Counter in file 0 17:9 -> 18:18, (#12 + #13) Counter in file 0 20:9 -> 20:15, (((#2 + 0) - #3) - #4) -Counter in file 0 23:9 -> 23:26, ((#3 + (#12 + #13)) + 0) -Counter in file 0 24:8 -> 24:12, ((#3 + (#12 + #13)) + 0) +Counter in file 0 23:9 -> 24:12, ((#3 + (#12 + #13)) + 0) Counter in file 0 24:13 -> 26:6, #14 Counter in file 0 28:8 -> 28:21, (#14 + 0) -Counter in file 0 28:22 -> 30:6, #17 -Counter in file 0 30:15 -> 30:28, ((#14 + 0) - #17) -Counter in file 0 31:12 -> 31:25, (((#14 + 0) - #17) - #8) -Counter in file 0 31:29 -> 31:42, ((((#14 + 0) - #17) - #8) - #24) -Counter in file 0 31:42 -> 31:43, (((((#14 + 0) - #17) - #8) - #24) - #25) -Counter in file 0 31:42 -> 31:43, (#24 + #25) -Counter in file 0 31:46 -> 31:60, #34 -Counter in file 0 31:60 -> 31:61, (#34 - #32) -Counter in file 0 31:60 -> 31:61, (#31 + #32) -Counter in file 0 31:61 -> 33:10, #20 -Counter in file 0 33:10 -> 33:11, #21 -Counter in file 0 34:9 -> 34:23, (#20 + #21) -Counter in file 0 36:9 -> 36:15, #8 -Counter in file 0 39:8 -> 39:12, (#17 + (#20 + #21)) -Counter in file 0 52:13 -> 52:30, #22 -Counter in file 0 53:12 -> 53:16, (#22 + 0) -Counter in file 0 53:17 -> 55:10, #26 -Counter in file 0 57:12 -> 57:25, (#26 + 0) -Counter in file 0 57:26 -> 59:10, #27 -Counter in file 0 65:17 -> 65:30, ((#26 + 0) - #27) -Counter in file 0 66:16 -> 66:29, (((#26 + 0) - #27) - #7) -Counter in file 0 66:33 -> 66:46, ((((#26 + 0) - #27) - #7) - #37) -Counter in file 0 66:46 -> 66:47, (#37 + #38) -Counter in file 0 66:46 -> 66:47, (((((#26 + 0) - #27) - #7) - #37) - #38) -Counter in file 0 66:50 -> 66:64, #47 -Counter in file 0 66:64 -> 66:65, (#47 - #42) -Counter in file 0 66:64 -> 66:65, (#41 + #42) -Counter in file 0 66:65 -> 68:14, #28 -Counter in file 0 68:14 -> 68:15, #29 -Counter in file 0 69:13 -> 69:27, (#28 + #29) -Counter in file 0 71:13 -> 71:19, #7 -Counter in file 0 73:6 -> 73:7, (#27 + (#28 + #29)) -Counter in file 0 75:9 -> 75:26, ((#27 + (#28 + #29)) + 0) -Counter in file 0 76:8 -> 76:12, (((#27 + (#28 + #29)) + 0) + 0) -Counter in file 0 76:13 -> 78:6, #30 -Counter in file 0 80:9 -> 80:10, (#33 + (#35 + #36)) -Counter in file 0 80:16 -> 80:29, (#30 + 0) -Counter in file 0 80:30 -> 82:6, #33 -Counter in file 0 82:15 -> 82:28, ((#30 + 0) - #33) -Counter in file 0 83:12 -> 83:25, (((#30 + 0) - #33) - #6) -Counter in file 0 83:29 -> 83:42, ((((#30 + 0) - #33) - #6) - #39) -Counter in file 0 83:42 -> 83:43, (#39 + #40) -Counter in file 0 83:42 -> 83:43, (((((#30 + 0) - #33) - #6) - #39) - #40) -Counter in file 0 83:46 -> 83:60, #48 -Counter in file 0 83:60 -> 83:61, (#43 + #44) -Counter in file 0 83:60 -> 83:61, (#48 - #44) -Counter in file 0 83:61 -> 85:10, #35 -Counter in file 0 85:10 -> 85:11, #36 -Counter in file 0 86:9 -> 86:23, (#35 + #36) -Counter in file 0 88:13 -> 90:15, #6 -Counter in file 0 93:9 -> 93:10, (#9 + (#10 + #11)) -Counter in file 0 93:16 -> 93:29, ((#33 + (#35 + #36)) + 0) -Counter in file 0 93:30 -> 95:6, #9 -Counter in file 0 95:15 -> 95:28, ((#33 + (#35 + #36)) - #9) -Counter in file 0 96:12 -> 96:25, (((#33 + (#35 + #36)) - #9) - #5) -Counter in file 0 96:29 -> 96:42, ((((#33 + (#35 + #36)) - #9) - #5) - #45) -Counter in file 0 96:42 -> 96:43, (#45 + #46) -Counter in file 0 96:42 -> 96:43, (((((#33 + (#35 + #36)) - #9) - #5) - #45) - #46) -Counter in file 0 96:46 -> 96:60, #51 -Counter in file 0 96:60 -> 96:61, (#49 + #50) -Counter in file 0 96:60 -> 96:61, (#51 - #50) -Counter in file 0 96:61 -> 98:10, #10 -Counter in file 0 98:10 -> 98:11, #11 -Counter in file 0 99:9 -> 99:23, (#10 + #11) -Counter in file 0 101:9 -> 101:15, #5 -Counter in file 0 103:1 -> 103:2, ((#9 + (#10 + #11)) + (((#5 + #6) + (#7 + #8)) + (((#2 + 0) - #3) - #4))) +Counter in file 0 28:22 -> 30:6, #16 +Counter in file 0 30:15 -> 30:28, ((#14 + 0) - #16) +Counter in file 0 31:12 -> 31:25, (((#14 + 0) - #16) - #11) +Counter in file 0 31:29 -> 31:42, ((((#14 + 0) - #16) - #11) - #23) +Counter in file 0 31:46 -> 31:60, #31 +Counter in file 0 31:61 -> 33:10, #18 +Counter in file 0 33:10 -> 33:11, #19 +Counter in file 0 34:9 -> 34:23, (#18 + #19) +Counter in file 0 36:9 -> 36:15, #11 +Counter in file 0 39:8 -> 39:12, (#16 + (#18 + #19)) +Counter in file 0 40:13 -> 41:16, #20 +Counter in file 0 41:17 -> 43:10, #24 +Counter in file 0 45:12 -> 45:25, (#24 + 0) +Counter in file 0 45:26 -> 47:10, #25 +Counter in file 0 48:17 -> 48:30, ((#24 + 0) - #25) +Counter in file 0 49:16 -> 49:29, (((#24 + 0) - #25) - #10) +Counter in file 0 49:33 -> 49:46, ((((#24 + 0) - #25) - #10) - #35) +Counter in file 0 49:50 -> 49:64, #40 +Counter in file 0 49:65 -> 51:14, #26 +Counter in file 0 51:14 -> 51:15, #27 +Counter in file 0 52:13 -> 52:27, (#26 + #27) +Counter in file 0 54:13 -> 54:19, #10 +Counter in file 0 59:9 -> 60:12, ((#25 + (#26 + #27)) + 0) +Counter in file 0 60:13 -> 62:6, #28 +Counter in file 0 64:9 -> 64:10, (#30 + (#33 + #34)) +Counter in file 0 64:16 -> 64:29, (#28 + 0) +Counter in file 0 64:30 -> 66:6, #30 +Counter in file 0 66:15 -> 66:28, ((#28 + 0) - #30) +Counter in file 0 67:12 -> 67:25, (((#28 + 0) - #30) - #9) +Counter in file 0 67:29 -> 67:42, ((((#28 + 0) - #30) - #9) - #36) +Counter in file 0 67:46 -> 67:60, #42 +Counter in file 0 67:61 -> 69:10, #33 +Counter in file 0 69:10 -> 69:11, #34 +Counter in file 0 70:9 -> 70:23, (#33 + #34) +Counter in file 0 72:13 -> 74:15, #9 +Counter in file 0 77:9 -> 77:10, (#5 + (#6 + #7)) +Counter in file 0 77:16 -> 77:29, ((#30 + (#33 + #34)) + 0) +Counter in file 0 77:30 -> 79:6, #5 +Counter in file 0 79:15 -> 79:28, ((#30 + (#33 + #34)) - #5) +Counter in file 0 80:12 -> 80:25, (((#30 + (#33 + #34)) - #5) - #8) +Counter in file 0 80:29 -> 80:42, ((((#30 + (#33 + #34)) - #5) - #8) - #39) +Counter in file 0 80:46 -> 80:60, #45 +Counter in file 0 80:61 -> 82:10, #6 +Counter in file 0 82:10 -> 82:11, #7 +Counter in file 0 83:9 -> 83:23, (#6 + #7) +Counter in file 0 85:9 -> 85:15, #8 +Counter in file 0 87:1 -> 87:2, ((#5 + (#6 + #7)) + (((#8 + #9) + (#10 + #11)) + (((#2 + 0) - #3) - #4))) Emitting segments for file: ../coverage/conditions.rs Combined regions: - 4:9 -> 4:26 (count=1) - 5:8 -> 5:12 (count=1) + 3:1 -> 3:11 (count=1) + 4:9 -> 5:12 (count=1) 5:13 -> 7:6 (count=1) 10:9 -> 10:10 (count=1) 10:16 -> 10:29 (count=1) @@ -97,78 +73,64 @@ Combined regions: 13:15 -> 13:28 (count=0) 14:12 -> 14:25 (count=0) 14:29 -> 14:42 (count=0) - 14:42 -> 14:43 (count=0) 14:46 -> 14:60 (count=0) - 14:60 -> 14:61 (count=0) 14:61 -> 16:10 (count=0) 16:10 -> 16:11 (count=0) 17:9 -> 18:18 (count=0) 20:9 -> 20:15 (count=0) - 23:9 -> 23:26 (count=1) - 24:8 -> 24:12 (count=1) + 23:9 -> 24:12 (count=1) 24:13 -> 26:6 (count=1) 28:8 -> 28:21 (count=1) 28:22 -> 30:6 (count=1) 30:15 -> 30:28 (count=0) 31:12 -> 31:25 (count=0) 31:29 -> 31:42 (count=0) - 31:42 -> 31:43 (count=0) 31:46 -> 31:60 (count=0) - 31:60 -> 31:61 (count=0) 31:61 -> 33:10 (count=0) 33:10 -> 33:11 (count=0) 34:9 -> 34:23 (count=0) 36:9 -> 36:15 (count=0) 39:8 -> 39:12 (count=1) - 52:13 -> 52:30 (count=1) - 53:12 -> 53:16 (count=1) - 53:17 -> 55:10 (count=1) - 57:12 -> 57:25 (count=1) - 57:26 -> 59:10 (count=1) - 65:17 -> 65:30 (count=0) - 66:16 -> 66:29 (count=0) - 66:33 -> 66:46 (count=0) - 66:46 -> 66:47 (count=0) - 66:50 -> 66:64 (count=0) - 66:64 -> 66:65 (count=0) - 66:65 -> 68:14 (count=0) - 68:14 -> 68:15 (count=0) - 69:13 -> 69:27 (count=0) - 71:13 -> 71:19 (count=0) - 73:6 -> 73:7 (count=1) - 75:9 -> 75:26 (count=1) - 76:8 -> 76:12 (count=1) - 76:13 -> 78:6 (count=1) - 80:9 -> 80:10 (count=0) - 80:16 -> 80:29 (count=1) - 80:30 -> 82:6 (count=0) - 82:15 -> 82:28 (count=1) - 83:12 -> 83:25 (count=0) - 83:29 -> 83:42 (count=0) - 83:42 -> 83:43 (count=0) - 83:46 -> 83:60 (count=0) - 83:60 -> 83:61 (count=0) - 83:61 -> 85:10 (count=0) - 85:10 -> 85:11 (count=0) - 86:9 -> 86:23 (count=0) - 88:13 -> 90:15 (count=1) - 93:9 -> 93:10 (count=0) - 93:16 -> 93:29 (count=0) - 93:30 -> 95:6 (count=0) - 95:15 -> 95:28 (count=0) - 96:12 -> 96:25 (count=0) - 96:29 -> 96:42 (count=0) - 96:42 -> 96:43 (count=0) - 96:46 -> 96:60 (count=0) - 96:60 -> 96:61 (count=0) - 96:61 -> 98:10 (count=0) - 98:10 -> 98:11 (count=0) - 99:9 -> 99:23 (count=0) - 101:9 -> 101:15 (count=0) - 103:1 -> 103:2 (count=1) + 40:13 -> 41:16 (count=1) + 41:17 -> 43:10 (count=1) + 45:12 -> 45:25 (count=1) + 45:26 -> 47:10 (count=1) + 48:17 -> 48:30 (count=0) + 49:16 -> 49:29 (count=0) + 49:33 -> 49:46 (count=0) + 49:50 -> 49:64 (count=0) + 49:65 -> 51:14 (count=0) + 51:14 -> 51:15 (count=0) + 52:13 -> 52:27 (count=0) + 54:13 -> 54:19 (count=0) + 59:9 -> 60:12 (count=1) + 60:13 -> 62:6 (count=1) + 64:9 -> 64:10 (count=0) + 64:16 -> 64:29 (count=1) + 64:30 -> 66:6 (count=0) + 66:15 -> 66:28 (count=1) + 67:12 -> 67:25 (count=0) + 67:29 -> 67:42 (count=0) + 67:46 -> 67:60 (count=0) + 67:61 -> 69:10 (count=0) + 69:10 -> 69:11 (count=0) + 70:9 -> 70:23 (count=0) + 72:13 -> 74:15 (count=1) + 77:9 -> 77:10 (count=0) + 77:16 -> 77:29 (count=0) + 77:30 -> 79:6 (count=0) + 79:15 -> 79:28 (count=0) + 80:12 -> 80:25 (count=0) + 80:29 -> 80:42 (count=0) + 80:46 -> 80:60 (count=0) + 80:61 -> 82:10 (count=0) + 82:10 -> 82:11 (count=0) + 83:9 -> 83:23 (count=0) + 85:9 -> 85:15 (count=0) + 87:1 -> 87:2 (count=1) +Segment at 3:1 (count = 1), RegionEntry +Segment at 3:11 (count = 0), Skipped Segment at 4:9 (count = 1), RegionEntry -Segment at 4:26 (count = 0), Skipped -Segment at 5:8 (count = 1), RegionEntry Segment at 5:12 (count = 0), Skipped Segment at 5:13 (count = 1), RegionEntry Segment at 7:6 (count = 0), Skipped @@ -183,10 +145,9 @@ Segment at 13:28 (count = 0), Skipped Segment at 14:12 (count = 0), RegionEntry Segment at 14:25 (count = 0), Skipped Segment at 14:29 (count = 0), RegionEntry -Segment at 14:42 (count = 0), RegionEntry -Segment at 14:43 (count = 0), Skipped +Segment at 14:42 (count = 0), Skipped Segment at 14:46 (count = 0), RegionEntry -Segment at 14:60 (count = 0), RegionEntry +Segment at 14:60 (count = 0), Skipped Segment at 14:61 (count = 0), RegionEntry Segment at 16:10 (count = 0), RegionEntry Segment at 16:11 (count = 0), Skipped @@ -195,8 +156,6 @@ Segment at 18:18 (count = 0), Skipped Segment at 20:9 (count = 0), RegionEntry Segment at 20:15 (count = 0), Skipped Segment at 23:9 (count = 1), RegionEntry -Segment at 23:26 (count = 0), Skipped -Segment at 24:8 (count = 1), RegionEntry Segment at 24:12 (count = 0), Skipped Segment at 24:13 (count = 1), RegionEntry Segment at 26:6 (count = 0), Skipped @@ -209,10 +168,9 @@ Segment at 30:28 (count = 0), Skipped Segment at 31:12 (count = 0), RegionEntry Segment at 31:25 (count = 0), Skipped Segment at 31:29 (count = 0), RegionEntry -Segment at 31:42 (count = 0), RegionEntry -Segment at 31:43 (count = 0), Skipped +Segment at 31:42 (count = 0), Skipped Segment at 31:46 (count = 0), RegionEntry -Segment at 31:60 (count = 0), RegionEntry +Segment at 31:60 (count = 0), Skipped Segment at 31:61 (count = 0), RegionEntry Segment at 33:10 (count = 0), RegionEntry Segment at 33:11 (count = 0), Skipped @@ -222,83 +180,74 @@ Segment at 36:9 (count = 0), RegionEntry Segment at 36:15 (count = 0), Skipped Segment at 39:8 (count = 1), RegionEntry Segment at 39:12 (count = 0), Skipped -Segment at 52:13 (count = 1), RegionEntry -Segment at 52:30 (count = 0), Skipped -Segment at 53:12 (count = 1), RegionEntry -Segment at 53:16 (count = 0), Skipped -Segment at 53:17 (count = 1), RegionEntry -Segment at 55:10 (count = 0), Skipped -Segment at 57:12 (count = 1), RegionEntry -Segment at 57:25 (count = 0), Skipped -Segment at 57:26 (count = 1), RegionEntry -Segment at 59:10 (count = 0), Skipped -Segment at 65:17 (count = 0), RegionEntry -Segment at 65:30 (count = 0), Skipped -Segment at 66:16 (count = 0), RegionEntry -Segment at 66:29 (count = 0), Skipped -Segment at 66:33 (count = 0), RegionEntry -Segment at 66:46 (count = 0), RegionEntry -Segment at 66:47 (count = 0), Skipped -Segment at 66:50 (count = 0), RegionEntry -Segment at 66:64 (count = 0), RegionEntry -Segment at 66:65 (count = 0), RegionEntry -Segment at 68:14 (count = 0), RegionEntry -Segment at 68:15 (count = 0), Skipped -Segment at 69:13 (count = 0), RegionEntry -Segment at 69:27 (count = 0), Skipped -Segment at 71:13 (count = 0), RegionEntry -Segment at 71:19 (count = 0), Skipped -Segment at 73:6 (count = 1), RegionEntry -Segment at 73:7 (count = 0), Skipped -Segment at 75:9 (count = 1), RegionEntry -Segment at 75:26 (count = 0), Skipped -Segment at 76:8 (count = 1), RegionEntry -Segment at 76:12 (count = 0), Skipped -Segment at 76:13 (count = 1), RegionEntry -Segment at 78:6 (count = 0), Skipped -Segment at 80:9 (count = 0), RegionEntry -Segment at 80:10 (count = 0), Skipped -Segment at 80:16 (count = 1), RegionEntry -Segment at 80:29 (count = 0), Skipped -Segment at 80:30 (count = 0), RegionEntry -Segment at 82:6 (count = 0), Skipped -Segment at 82:15 (count = 1), RegionEntry -Segment at 82:28 (count = 0), Skipped -Segment at 83:12 (count = 0), RegionEntry -Segment at 83:25 (count = 0), Skipped -Segment at 83:29 (count = 0), RegionEntry -Segment at 83:42 (count = 0), RegionEntry -Segment at 83:43 (count = 0), Skipped -Segment at 83:46 (count = 0), RegionEntry -Segment at 83:60 (count = 0), RegionEntry -Segment at 83:61 (count = 0), RegionEntry -Segment at 85:10 (count = 0), RegionEntry -Segment at 85:11 (count = 0), Skipped -Segment at 86:9 (count = 0), RegionEntry -Segment at 86:23 (count = 0), Skipped -Segment at 88:13 (count = 1), RegionEntry -Segment at 90:15 (count = 0), Skipped -Segment at 93:9 (count = 0), RegionEntry -Segment at 93:10 (count = 0), Skipped -Segment at 93:16 (count = 0), RegionEntry -Segment at 93:29 (count = 0), Skipped -Segment at 93:30 (count = 0), RegionEntry -Segment at 95:6 (count = 0), Skipped -Segment at 95:15 (count = 0), RegionEntry -Segment at 95:28 (count = 0), Skipped -Segment at 96:12 (count = 0), RegionEntry -Segment at 96:25 (count = 0), Skipped -Segment at 96:29 (count = 0), RegionEntry -Segment at 96:42 (count = 0), RegionEntry -Segment at 96:43 (count = 0), Skipped -Segment at 96:46 (count = 0), RegionEntry -Segment at 96:60 (count = 0), RegionEntry -Segment at 96:61 (count = 0), RegionEntry -Segment at 98:10 (count = 0), RegionEntry -Segment at 98:11 (count = 0), Skipped -Segment at 99:9 (count = 0), RegionEntry -Segment at 99:23 (count = 0), Skipped -Segment at 101:9 (count = 0), RegionEntry -Segment at 101:15 (count = 0), Skipped -Segment at 103:1 (count = 1), RegionEntry -Segment at 103:2 (count = 0), Skipped +Segment at 40:13 (count = 1), RegionEntry +Segment at 41:16 (count = 0), Skipped +Segment at 41:17 (count = 1), RegionEntry +Segment at 43:10 (count = 0), Skipped +Segment at 45:12 (count = 1), RegionEntry +Segment at 45:25 (count = 0), Skipped +Segment at 45:26 (count = 1), RegionEntry +Segment at 47:10 (count = 0), Skipped +Segment at 48:17 (count = 0), RegionEntry +Segment at 48:30 (count = 0), Skipped +Segment at 49:16 (count = 0), RegionEntry +Segment at 49:29 (count = 0), Skipped +Segment at 49:33 (count = 0), RegionEntry +Segment at 49:46 (count = 0), Skipped +Segment at 49:50 (count = 0), RegionEntry +Segment at 49:64 (count = 0), Skipped +Segment at 49:65 (count = 0), RegionEntry +Segment at 51:14 (count = 0), RegionEntry +Segment at 51:15 (count = 0), Skipped +Segment at 52:13 (count = 0), RegionEntry +Segment at 52:27 (count = 0), Skipped +Segment at 54:13 (count = 0), RegionEntry +Segment at 54:19 (count = 0), Skipped +Segment at 59:9 (count = 1), RegionEntry +Segment at 60:12 (count = 0), Skipped +Segment at 60:13 (count = 1), RegionEntry +Segment at 62:6 (count = 0), Skipped +Segment at 64:9 (count = 0), RegionEntry +Segment at 64:10 (count = 0), Skipped +Segment at 64:16 (count = 1), RegionEntry +Segment at 64:29 (count = 0), Skipped +Segment at 64:30 (count = 0), RegionEntry +Segment at 66:6 (count = 0), Skipped +Segment at 66:15 (count = 1), RegionEntry +Segment at 66:28 (count = 0), Skipped +Segment at 67:12 (count = 0), RegionEntry +Segment at 67:25 (count = 0), Skipped +Segment at 67:29 (count = 0), RegionEntry +Segment at 67:42 (count = 0), Skipped +Segment at 67:46 (count = 0), RegionEntry +Segment at 67:60 (count = 0), Skipped +Segment at 67:61 (count = 0), RegionEntry +Segment at 69:10 (count = 0), RegionEntry +Segment at 69:11 (count = 0), Skipped +Segment at 70:9 (count = 0), RegionEntry +Segment at 70:23 (count = 0), Skipped +Segment at 72:13 (count = 1), RegionEntry +Segment at 74:15 (count = 0), Skipped +Segment at 77:9 (count = 0), RegionEntry +Segment at 77:10 (count = 0), Skipped +Segment at 77:16 (count = 0), RegionEntry +Segment at 77:29 (count = 0), Skipped +Segment at 77:30 (count = 0), RegionEntry +Segment at 79:6 (count = 0), Skipped +Segment at 79:15 (count = 0), RegionEntry +Segment at 79:28 (count = 0), Skipped +Segment at 80:12 (count = 0), RegionEntry +Segment at 80:25 (count = 0), Skipped +Segment at 80:29 (count = 0), RegionEntry +Segment at 80:42 (count = 0), Skipped +Segment at 80:46 (count = 0), RegionEntry +Segment at 80:60 (count = 0), Skipped +Segment at 80:61 (count = 0), RegionEntry +Segment at 82:10 (count = 0), RegionEntry +Segment at 82:11 (count = 0), Skipped +Segment at 83:9 (count = 0), RegionEntry +Segment at 83:23 (count = 0), Skipped +Segment at 85:9 (count = 0), RegionEntry +Segment at 85:15 (count = 0), Skipped +Segment at 87:1 (count = 1), RegionEntry +Segment at 87:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.dead_code.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.dead_code.txt new file mode 100644 index 00000000000..a2187d477c8 --- /dev/null +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.dead_code.txt @@ -0,0 +1,47 @@ +Counter in file 0 3:1 -> 10:15, 0 +Counter in file 0 10:16 -> 12:6, 0 +Counter in file 0 12:6 -> 12:7, 0 +Counter in file 0 13:1 -> 13:2, 0 +Counter in file 0 15:1 -> 22:15, 0 +Counter in file 0 22:16 -> 24:6, 0 +Counter in file 0 24:6 -> 24:7, 0 +Counter in file 0 25:1 -> 25:2, 0 +Counter in file 0 27:1 -> 34:15, #1 +Counter in file 0 34:16 -> 36:6, #2 +Counter in file 0 36:6 -> 36:7, (#1 - #2) +Counter in file 0 37:1 -> 37:2, (#2 + (#1 - #2)) +Emitting segments for file: ../coverage/dead_code.rs +Combined regions: + 3:1 -> 10:15 (count=0) + 10:16 -> 12:6 (count=0) + 12:6 -> 12:7 (count=0) + 13:1 -> 13:2 (count=0) + 15:1 -> 22:15 (count=0) + 22:16 -> 24:6 (count=0) + 24:6 -> 24:7 (count=0) + 25:1 -> 25:2 (count=0) + 27:1 -> 34:15 (count=1) + 34:16 -> 36:6 (count=1) + 36:6 -> 36:7 (count=0) + 37:1 -> 37:2 (count=1) +Segment at 3:1 (count = 0), RegionEntry +Segment at 10:15 (count = 0), Skipped +Segment at 10:16 (count = 0), RegionEntry +Segment at 12:6 (count = 0), RegionEntry +Segment at 12:7 (count = 0), Skipped +Segment at 13:1 (count = 0), RegionEntry +Segment at 13:2 (count = 0), Skipped +Segment at 15:1 (count = 0), RegionEntry +Segment at 22:15 (count = 0), Skipped +Segment at 22:16 (count = 0), RegionEntry +Segment at 24:6 (count = 0), RegionEntry +Segment at 24:7 (count = 0), Skipped +Segment at 25:1 (count = 0), RegionEntry +Segment at 25:2 (count = 0), Skipped +Segment at 27:1 (count = 1), RegionEntry +Segment at 34:15 (count = 0), Skipped +Segment at 34:16 (count = 1), RegionEntry +Segment at 36:6 (count = 0), RegionEntry +Segment at 36:7 (count = 0), Skipped +Segment at 37:1 (count = 1), RegionEntry +Segment at 37:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.drop_trait.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.drop_trait.txt index 375025fe8bc..66c51e3a298 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.drop_trait.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.drop_trait.txt @@ -1,20 +1,16 @@ -Counter in file 0 9:24 -> 11:6, #1 -Counter in file 0 15:9 -> 17:42, #1 -Counter in file 0 19:8 -> 19:12, (#1 + 0) +Counter in file 0 9:5 -> 11:6, #1 +Counter in file 0 14:1 -> 19:12, #1 Counter in file 0 20:9 -> 21:22, #2 Counter in file 0 27:1 -> 27:2, (#2 + 0) Emitting segments for file: ../coverage/drop_trait.rs Combined regions: - 9:24 -> 11:6 (count=2) - 15:9 -> 17:42 (count=1) - 19:8 -> 19:12 (count=1) + 9:5 -> 11:6 (count=2) + 14:1 -> 19:12 (count=1) 20:9 -> 21:22 (count=1) 27:1 -> 27:2 (count=1) -Segment at 9:24 (count = 2), RegionEntry +Segment at 9:5 (count = 2), RegionEntry Segment at 11:6 (count = 0), Skipped -Segment at 15:9 (count = 1), RegionEntry -Segment at 17:42 (count = 0), Skipped -Segment at 19:8 (count = 1), RegionEntry +Segment at 14:1 (count = 1), RegionEntry Segment at 19:12 (count = 0), Skipped Segment at 20:9 (count = 1), RegionEntry Segment at 21:22 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.generics.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.generics.txt index 013a69ed398..e2cbf6f709e 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.generics.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.generics.txt @@ -1,48 +1,44 @@ -Counter in file 0 17:24 -> 19:6, #1 -Counter in file 0 17:24 -> 19:6, #1 -Counter in file 0 23:9 -> 28:28, #1 -Counter in file 0 30:8 -> 30:12, (#1 + 0) +Counter in file 0 17:5 -> 19:6, #1 +Counter in file 0 17:5 -> 19:6, #1 +Counter in file 0 22:1 -> 30:12, #1 Counter in file 0 31:9 -> 32:22, #2 -Counter in file 0 38:1 -> 38:2, (#2 + 0) -Counter in file 0 10:49 -> 12:6, #1 -Counter in file 0 10:49 -> 12:6, #1 +Counter in file 0 42:1 -> 42:2, (#2 + 0) +Counter in file 0 10:5 -> 12:6, #1 +Counter in file 0 10:5 -> 12:6, #1 Emitting segments for file: ../coverage/generics.rs Combined regions: - 10:49 -> 12:6 (count=3) - 17:24 -> 19:6 (count=2) - 23:9 -> 28:28 (count=1) - 30:8 -> 30:12 (count=1) + 10:5 -> 12:6 (count=3) + 17:5 -> 19:6 (count=2) + 22:1 -> 30:12 (count=1) 31:9 -> 32:22 (count=1) - 38:1 -> 38:2 (count=1) -Segment at 10:49 (count = 3), RegionEntry + 42:1 -> 42:2 (count=1) +Segment at 10:5 (count = 3), RegionEntry Segment at 12:6 (count = 0), Skipped -Segment at 17:24 (count = 2), RegionEntry +Segment at 17:5 (count = 2), RegionEntry Segment at 19:6 (count = 0), Skipped -Segment at 23:9 (count = 1), RegionEntry -Segment at 28:28 (count = 0), Skipped -Segment at 30:8 (count = 1), RegionEntry +Segment at 22:1 (count = 1), RegionEntry Segment at 30:12 (count = 0), Skipped Segment at 31:9 (count = 1), RegionEntry Segment at 32:22 (count = 0), Skipped -Segment at 38:1 (count = 1), RegionEntry -Segment at 38:2 (count = 0), Skipped +Segment at 42:1 (count = 1), RegionEntry +Segment at 42:2 (count = 0), Skipped Emitting segments for function: _RNvMCs4fqI2P2rA04_8genericsINtB2_8FireworkdE12set_strengthB2_ Combined regions: - 10:49 -> 12:6 (count=2) -Segment at 10:49 (count = 2), RegionEntry + 10:5 -> 12:6 (count=2) +Segment at 10:5 (count = 2), RegionEntry Segment at 12:6 (count = 0), Skipped Emitting segments for function: _RNvMCs4fqI2P2rA04_8genericsINtB2_8FireworklE12set_strengthB2_ Combined regions: - 10:49 -> 12:6 (count=1) -Segment at 10:49 (count = 1), RegionEntry + 10:5 -> 12:6 (count=1) +Segment at 10:5 (count = 1), RegionEntry Segment at 12:6 (count = 0), Skipped -Emitting segments for function: _RNvXs_Cs4fqI2P2rA04_8genericsINtB4_8FireworklENtNtNtCs7f2nZg1zwMz_4core3ops4drop4Drop4dropB4_ +Emitting segments for function: _RNvXs_Cs4fqI2P2rA04_8genericsINtB4_8FireworklENtNtNtCs3rFBWs28XFJ_4core3ops4drop4Drop4dropB4_ Combined regions: - 17:24 -> 19:6 (count=1) -Segment at 17:24 (count = 1), RegionEntry + 17:5 -> 19:6 (count=1) +Segment at 17:5 (count = 1), RegionEntry Segment at 19:6 (count = 0), Skipped -Emitting segments for function: _RNvXs_Cs4fqI2P2rA04_8genericsINtB4_8FireworkdENtNtNtCs7f2nZg1zwMz_4core3ops4drop4Drop4dropB4_ +Emitting segments for function: _RNvXs_Cs4fqI2P2rA04_8genericsINtB4_8FireworkdENtNtNtCs3rFBWs28XFJ_4core3ops4drop4Drop4dropB4_ Combined regions: - 17:24 -> 19:6 (count=1) -Segment at 17:24 (count = 1), RegionEntry + 17:5 -> 19:6 (count=1) +Segment at 17:5 (count = 1), RegionEntry Segment at 19:6 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.if.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.if.txt index c2bef365ea9..2e802a462ea 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.if.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.if.txt @@ -1,18 +1,14 @@ -Counter in file 0 8:5 -> 18:10, #1 -Counter in file 0 21:9 -> 21:16, (#1 + 0) +Counter in file 0 3:1 -> 21:16, #1 Counter in file 0 22:5 -> 27:6, #2 Counter in file 0 27:6 -> 27:7, (#1 - #2) Counter in file 0 28:1 -> 28:2, (#2 + (#1 - #2)) Emitting segments for file: ../coverage/if.rs Combined regions: - 8:5 -> 18:10 (count=1) - 21:9 -> 21:16 (count=1) + 3:1 -> 21:16 (count=1) 22:5 -> 27:6 (count=1) 27:6 -> 27:7 (count=0) 28:1 -> 28:2 (count=1) -Segment at 8:5 (count = 1), RegionEntry -Segment at 18:10 (count = 0), Skipped -Segment at 21:9 (count = 1), RegionEntry +Segment at 3:1 (count = 1), RegionEntry Segment at 21:16 (count = 0), Skipped Segment at 22:5 (count = 1), RegionEntry Segment at 27:6 (count = 0), RegionEntry diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.if_else.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.if_else.txt index faf5c094bba..03b35b0f009 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.if_else.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.if_else.txt @@ -1,4 +1,4 @@ -Counter in file 0 7:9 -> 11:16, #1 +Counter in file 0 3:1 -> 11:16, #1 Counter in file 0 12:5 -> 17:6, #2 Counter in file 0 20:9 -> 22:16, (#1 - #2) Counter in file 0 26:9 -> 26:16, (#2 + (#1 - #2)) @@ -7,14 +7,14 @@ Counter in file 0 34:5 -> 39:6, ((#2 + (#1 - #2)) - #3) Counter in file 0 40:1 -> 40:2, (#3 + ((#2 + (#1 - #2)) - #3)) Emitting segments for file: ../coverage/if_else.rs Combined regions: - 7:9 -> 11:16 (count=1) + 3:1 -> 11:16 (count=1) 12:5 -> 17:6 (count=1) 20:9 -> 22:16 (count=0) 26:9 -> 26:16 (count=1) 27:5 -> 32:6 (count=1) 34:5 -> 39:6 (count=0) 40:1 -> 40:2 (count=1) -Segment at 7:9 (count = 1), RegionEntry +Segment at 3:1 (count = 1), RegionEntry Segment at 11:16 (count = 0), Skipped Segment at 12:5 (count = 1), RegionEntry Segment at 17:6 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.inner_items.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.inner_items.txt index e4dfae76817..5dc704d6149 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.inner_items.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.inner_items.txt @@ -1,39 +1,39 @@ -Counter in file 0 19:13 -> 22:6, #1 -Counter in file 0 7:9 -> 9:26, #1 -Counter in file 0 10:8 -> 10:15, (#1 + 0) +Counter in file 0 18:5 -> 22:6, #1 +Counter in file 0 3:1 -> 3:11, #1 +Counter in file 0 7:9 -> 10:15, (#1 + 0) Counter in file 0 10:16 -> 12:6, #2 Counter in file 0 12:6 -> 12:7, (#1 - #2) Counter in file 0 48:8 -> 48:15, (#2 + (#1 - #2)) Counter in file 0 48:16 -> 50:6, #3 Counter in file 0 50:6 -> 50:7, ((#2 + (#1 - #2)) - #3) Counter in file 0 52:9 -> 57:2, (#3 + ((#2 + (#1 - #2)) - #3)) -Counter in file 0 33:42 -> 36:10, #1 -Counter in file 0 40:45 -> 43:10, #1 +Counter in file 0 33:9 -> 36:10, #1 +Counter in file 0 40:9 -> 43:10, #1 Emitting segments for file: ../coverage/inner_items.rs Combined regions: - 7:9 -> 9:26 (count=1) - 10:8 -> 10:15 (count=1) + 3:1 -> 3:11 (count=1) + 7:9 -> 10:15 (count=1) 10:16 -> 12:6 (count=1) 12:6 -> 12:7 (count=0) - 19:13 -> 22:6 (count=3) - 33:42 -> 36:10 (count=1) - 40:45 -> 43:10 (count=1) + 18:5 -> 22:6 (count=3) + 33:9 -> 36:10 (count=1) + 40:9 -> 43:10 (count=1) 48:8 -> 48:15 (count=1) 48:16 -> 50:6 (count=1) 50:6 -> 50:7 (count=0) 52:9 -> 57:2 (count=1) +Segment at 3:1 (count = 1), RegionEntry +Segment at 3:11 (count = 0), Skipped Segment at 7:9 (count = 1), RegionEntry -Segment at 9:26 (count = 0), Skipped -Segment at 10:8 (count = 1), RegionEntry Segment at 10:15 (count = 0), Skipped Segment at 10:16 (count = 1), RegionEntry Segment at 12:6 (count = 0), RegionEntry Segment at 12:7 (count = 0), Skipped -Segment at 19:13 (count = 3), RegionEntry +Segment at 18:5 (count = 3), RegionEntry Segment at 22:6 (count = 0), Skipped -Segment at 33:42 (count = 1), RegionEntry +Segment at 33:9 (count = 1), RegionEntry Segment at 36:10 (count = 0), Skipped -Segment at 40:45 (count = 1), RegionEntry +Segment at 40:9 (count = 1), RegionEntry Segment at 43:10 (count = 0), Skipped Segment at 48:8 (count = 1), RegionEntry Segment at 48:15 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.lazy_boolean.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.lazy_boolean.txt index 8e56d79d9d2..d5667fb861e 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.lazy_boolean.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.lazy_boolean.txt @@ -1,62 +1,48 @@ -Counter in file 0 7:9 -> 9:42, #1 -Counter in file 0 10:8 -> 10:15, (#1 + 0) +Counter in file 0 3:1 -> 10:15, #1 Counter in file 0 10:16 -> 14:6, #2 Counter in file 0 14:6 -> 14:7, (#1 - #2) Counter in file 0 16:9 -> 16:17, ((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) Counter in file 0 18:13 -> 18:18, (#2 + (#1 - #2)) Counter in file 0 20:13 -> 20:18, ((#2 + (#1 - #2)) - #3) -Counter in file 0 20:18 -> 20:19, (#3 + #4) -Counter in file 0 20:18 -> 20:19, (((#2 + (#1 - #2)) - #3) - #4) Counter in file 0 23:9 -> 23:17, ((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) Counter in file 0 25:13 -> 25:18, (((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) + 0) Counter in file 0 27:13 -> 27:18, (((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) -Counter in file 0 27:18 -> 27:19, (#5 + #6) -Counter in file 0 27:18 -> 27:19, ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6) -Counter in file 0 29:9 -> 29:17, ((#7 - #8) + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + #8)) +Counter in file 0 29:9 -> 29:17, (#8 + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + (#7 - #8))) Counter in file 0 29:20 -> 29:25, (((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) + 0) Counter in file 0 29:29 -> 29:34, #7 -Counter in file 0 29:34 -> 29:35, ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + #8) -Counter in file 0 29:34 -> 29:35, (#7 - #8) -Counter in file 0 30:9 -> 30:17, ((#9 - #10) + ((((#7 - #8) + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + #8)) - #9) + #10)) -Counter in file 0 30:20 -> 30:25, (((#7 - #8) + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + #8)) + 0) +Counter in file 0 30:9 -> 30:17, (#10 + (((#8 + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + (#7 - #8))) - #9) + (#9 - #10))) +Counter in file 0 30:20 -> 30:25, ((#8 + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + (#7 - #8))) + 0) Counter in file 0 30:29 -> 30:34, #9 -Counter in file 0 30:34 -> 30:35, ((((#7 - #8) + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + #8)) - #9) + #10) -Counter in file 0 30:34 -> 30:35, (#9 - #10) -Counter in file 0 33:9 -> 34:16, (((#9 - #10) + ((((#7 - #8) + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + #8)) - #9) + #10)) + 0) +Counter in file 0 33:9 -> 34:16, ((#10 + (((#8 + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + (#7 - #8))) - #9) + (#9 - #10))) + 0) Counter in file 0 35:5 -> 38:6, #11 -Counter in file 0 38:6 -> 38:7, (((#9 - #10) + ((((#7 - #8) + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + #8)) - #9) + #10)) - #11) -Counter in file 0 41:9 -> 41:16, (#11 + (((#9 - #10) + ((((#7 - #8) + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + #8)) - #9) + #10)) - #11)) +Counter in file 0 38:6 -> 38:7, ((#10 + (((#8 + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + (#7 - #8))) - #9) + (#9 - #10))) - #11) +Counter in file 0 41:9 -> 41:16, (#11 + ((#10 + (((#8 + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + (#7 - #8))) - #9) + (#9 - #10))) - #11)) Counter in file 0 42:5 -> 45:6, #12 -Counter in file 0 47:5 -> 50:6, ((#11 + (((#9 - #10) + ((((#7 - #8) + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + #8)) - #9) + #10)) - #11)) - #12) -Counter in file 0 52:8 -> 52:16, (#12 + ((#11 + (((#9 - #10) + ((((#7 - #8) + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + #8)) - #9) + #10)) - #11)) - #12)) +Counter in file 0 47:5 -> 50:6, ((#11 + ((#10 + (((#8 + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + (#7 - #8))) - #9) + (#9 - #10))) - #11)) - #12) +Counter in file 0 52:8 -> 52:16, (#12 + ((#11 + ((#10 + (((#8 + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + (#7 - #8))) - #9) + (#9 - #10))) - #11)) - #12)) Counter in file 0 52:17 -> 54:6, #13 -Counter in file 0 54:6 -> 54:7, ((#12 + ((#11 + (((#9 - #10) + ((((#7 - #8) + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + #8)) - #9) + #10)) - #11)) - #12)) - #13) -Counter in file 0 56:8 -> 56:15, (#13 + ((#12 + ((#11 + (((#9 - #10) + ((((#7 - #8) + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + #8)) - #9) + #10)) - #11)) - #12)) - #13)) +Counter in file 0 54:6 -> 54:7, ((#12 + ((#11 + ((#10 + (((#8 + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + (#7 - #8))) - #9) + (#9 - #10))) - #11)) - #12)) - #13) +Counter in file 0 56:8 -> 56:15, (#13 + ((#12 + ((#11 + ((#10 + (((#8 + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + (#7 - #8))) - #9) + (#9 - #10))) - #11)) - #12)) - #13)) Counter in file 0 56:16 -> 58:6, #14 -Counter in file 0 58:12 -> 60:6, ((#13 + ((#12 + ((#11 + (((#9 - #10) + ((((#7 - #8) + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + #8)) - #9) + #10)) - #11)) - #12)) - #13)) - #14) -Counter in file 0 61:1 -> 61:2, (#14 + ((#13 + ((#12 + ((#11 + (((#9 - #10) + ((((#7 - #8) + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + #8)) - #9) + #10)) - #11)) - #12)) - #13)) - #14)) +Counter in file 0 58:12 -> 60:6, ((#13 + ((#12 + ((#11 + ((#10 + (((#8 + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + (#7 - #8))) - #9) + (#9 - #10))) - #11)) - #12)) - #13)) - #14) +Counter in file 0 61:1 -> 61:2, (#14 + ((#13 + ((#12 + ((#11 + ((#10 + (((#8 + ((((#5 + #6) + ((((#3 + #4) + (((#2 + (#1 - #2)) - #3) - #4)) - #5) - #6)) - #7) + (#7 - #8))) - #9) + (#9 - #10))) - #11)) - #12)) - #13)) - #14)) Emitting segments for file: ../coverage/lazy_boolean.rs Combined regions: - 7:9 -> 9:42 (count=1) - 10:8 -> 10:15 (count=1) + 3:1 -> 10:15 (count=1) 10:16 -> 14:6 (count=1) 14:6 -> 14:7 (count=0) 16:9 -> 16:17 (count=1) 18:13 -> 18:18 (count=1) 20:13 -> 20:18 (count=0) - 20:18 -> 20:19 (count=1) 23:9 -> 23:17 (count=1) 25:13 -> 25:18 (count=1) 27:13 -> 27:18 (count=1) - 27:18 -> 27:19 (count=1) 29:9 -> 29:17 (count=1) 29:20 -> 29:25 (count=1) 29:29 -> 29:34 (count=1) - 29:34 -> 29:35 (count=1) 30:9 -> 30:17 (count=1) 30:20 -> 30:25 (count=1) 30:29 -> 30:34 (count=0) - 30:34 -> 30:35 (count=1) 33:9 -> 34:16 (count=1) 35:5 -> 38:6 (count=0) 38:6 -> 38:7 (count=1) @@ -70,9 +56,7 @@ Combined regions: 56:16 -> 58:6 (count=1) 58:12 -> 60:6 (count=0) 61:1 -> 61:2 (count=1) -Segment at 7:9 (count = 1), RegionEntry -Segment at 9:42 (count = 0), Skipped -Segment at 10:8 (count = 1), RegionEntry +Segment at 3:1 (count = 1), RegionEntry Segment at 10:15 (count = 0), Skipped Segment at 10:16 (count = 1), RegionEntry Segment at 14:6 (count = 0), RegionEntry @@ -82,29 +66,25 @@ Segment at 16:17 (count = 0), Skipped Segment at 18:13 (count = 1), RegionEntry Segment at 18:18 (count = 0), Skipped Segment at 20:13 (count = 0), RegionEntry -Segment at 20:18 (count = 1), RegionEntry -Segment at 20:19 (count = 0), Skipped +Segment at 20:18 (count = 0), Skipped Segment at 23:9 (count = 1), RegionEntry Segment at 23:17 (count = 0), Skipped Segment at 25:13 (count = 1), RegionEntry Segment at 25:18 (count = 0), Skipped Segment at 27:13 (count = 1), RegionEntry -Segment at 27:18 (count = 1), RegionEntry -Segment at 27:19 (count = 0), Skipped +Segment at 27:18 (count = 0), Skipped Segment at 29:9 (count = 1), RegionEntry Segment at 29:17 (count = 0), Skipped Segment at 29:20 (count = 1), RegionEntry Segment at 29:25 (count = 0), Skipped Segment at 29:29 (count = 1), RegionEntry -Segment at 29:34 (count = 1), RegionEntry -Segment at 29:35 (count = 0), Skipped +Segment at 29:34 (count = 0), Skipped Segment at 30:9 (count = 1), RegionEntry Segment at 30:17 (count = 0), Skipped Segment at 30:20 (count = 1), RegionEntry Segment at 30:25 (count = 0), Skipped Segment at 30:29 (count = 0), RegionEntry -Segment at 30:34 (count = 1), RegionEntry -Segment at 30:35 (count = 0), Skipped +Segment at 30:34 (count = 0), Skipped Segment at 33:9 (count = 1), RegionEntry Segment at 34:16 (count = 0), Skipped Segment at 35:5 (count = 0), RegionEntry diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.loop_break_value.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.loop_break_value.txt index a6144b8072a..17bd5c2ff31 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.loop_break_value.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.loop_break_value.txt @@ -1,6 +1,6 @@ -Counter in file 0 3:11 -> 13:2, #1 +Counter in file 0 3:1 -> 13:2, #1 Emitting segments for file: ../coverage/loop_break_value.rs Combined regions: - 3:11 -> 13:2 (count=1) -Segment at 3:11 (count = 1), RegionEntry + 3:1 -> 13:2 (count=1) +Segment at 3:1 (count = 1), RegionEntry Segment at 13:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.loops_branches.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.loops_branches.txt index d8af6998964..d1da50b1529 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.loops_branches.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.loops_branches.txt @@ -1,24 +1,22 @@ -Counter in file 0 10:12 -> 10:16, #1 +Counter in file 0 9:5 -> 10:16, #1 Counter in file 0 11:16 -> 11:21, #2 Counter in file 0 14:14 -> 14:15, (#2 - #5) -Counter in file 0 15:13 -> 15:31, (0 + (#2 - #5)) +Counter in file 0 15:13 -> 15:31, ((0 - #6) + (#2 - #5)) Counter in file 0 15:31 -> 15:32, #4 -Counter in file 0 17:10 -> 17:11, #3 Counter in file 0 18:9 -> 18:15, (#3 + 0) Counter in file 0 19:5 -> 19:6, (#4 + (#3 + 0)) -Counter in file 0 22:11 -> 25:2, #1 +Counter in file 0 22:1 -> 25:2, #1 Emitting segments for file: ../coverage/loops_branches.rs Combined regions: - 10:12 -> 10:16 (count=1) + 9:5 -> 10:16 (count=1) 11:16 -> 11:21 (count=1) 14:14 -> 14:15 (count=1) 15:13 -> 15:31 (count=1) 15:31 -> 15:32 (count=0) - 17:10 -> 17:11 (count=1) 18:9 -> 18:15 (count=1) 19:5 -> 19:6 (count=1) - 22:11 -> 25:2 (count=1) -Segment at 10:12 (count = 1), RegionEntry + 22:1 -> 25:2 (count=1) +Segment at 9:5 (count = 1), RegionEntry Segment at 10:16 (count = 0), Skipped Segment at 11:16 (count = 1), RegionEntry Segment at 11:21 (count = 0), Skipped @@ -27,11 +25,9 @@ Segment at 14:15 (count = 0), Skipped Segment at 15:13 (count = 1), RegionEntry Segment at 15:31 (count = 0), RegionEntry Segment at 15:32 (count = 0), Skipped -Segment at 17:10 (count = 1), RegionEntry -Segment at 17:11 (count = 0), Skipped Segment at 18:9 (count = 1), RegionEntry Segment at 18:15 (count = 0), Skipped Segment at 19:5 (count = 1), RegionEntry Segment at 19:6 (count = 0), Skipped -Segment at 22:11 (count = 1), RegionEntry +Segment at 22:1 (count = 1), RegionEntry Segment at 25:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.nested_loops.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.nested_loops.txt index f8e504c56c4..f30dd9e3716 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.nested_loops.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.nested_loops.txt @@ -1,40 +1,34 @@ -Counter in file 0 2:9 -> 3:27, #1 +Counter in file 0 1:1 -> 3:27, #1 Counter in file 0 5:19 -> 5:32, (#1 + (#2 + #3)) Counter in file 0 6:13 -> 7:24, ((#1 + (#2 + #3)) - #4) Counter in file 0 8:13 -> 8:14, ((((#1 + (#2 + #3)) - #4) + (#6 + #7)) - #3) Counter in file 0 8:18 -> 8:23, (((#1 + (#2 + #3)) - #4) + (#6 + #7)) Counter in file 0 9:16 -> 9:22, (((((#1 + (#2 + #3)) - #4) + (#6 + #7)) - #3) + 0) Counter in file 0 10:17 -> 10:22, #2 -Counter in file 0 12:13 -> 13:19, (((((#1 + (#2 + #3)) - #4) + (#6 + #7)) - #3) - #2) -Counter in file 0 14:16 -> 14:22, ((((((#1 + (#2 + #3)) - #4) + (#6 + #7)) - #3) - #2) + 0) +Counter in file 0 11:14 -> 14:22, (((((#1 + (#2 + #3)) - #4) + (#6 + #7)) - #3) - #2) Counter in file 0 15:17 -> 16:27, ((((((#1 + (#2 + #3)) - #4) + (#6 + #7)) - #3) - #2) - #7) Counter in file 0 17:21 -> 17:33, #5 -Counter in file 0 18:24 -> 21:14, #6 +Counter in file 0 18:24 -> 20:18, #6 Counter in file 0 21:14 -> 21:15, #7 -Counter in file 0 22:10 -> 22:11, (#6 + #7) Counter in file 0 23:9 -> 23:23, (#2 + #3) -Counter in file 0 24:6 -> 24:7, #4 Counter in file 0 25:1 -> 25:2, (#5 + #4) Emitting segments for file: ../coverage/nested_loops.rs Combined regions: - 2:9 -> 3:27 (count=1) + 1:1 -> 3:27 (count=1) 5:19 -> 5:32 (count=1) 6:13 -> 7:24 (count=1) 8:13 -> 8:14 (count=3) 8:18 -> 8:23 (count=3) 9:16 -> 9:22 (count=3) 10:17 -> 10:22 (count=0) - 12:13 -> 13:19 (count=3) - 14:16 -> 14:22 (count=3) + 11:14 -> 14:22 (count=3) 15:17 -> 16:27 (count=1) 17:21 -> 17:33 (count=1) - 18:24 -> 21:14 (count=0) + 18:24 -> 20:18 (count=0) 21:14 -> 21:15 (count=2) - 22:10 -> 22:11 (count=2) 23:9 -> 23:23 (count=0) - 24:6 -> 24:7 (count=0) 25:1 -> 25:2 (count=1) -Segment at 2:9 (count = 1), RegionEntry +Segment at 1:1 (count = 1), RegionEntry Segment at 3:27 (count = 0), Skipped Segment at 5:19 (count = 1), RegionEntry Segment at 5:32 (count = 0), Skipped @@ -48,22 +42,17 @@ Segment at 9:16 (count = 3), RegionEntry Segment at 9:22 (count = 0), Skipped Segment at 10:17 (count = 0), RegionEntry Segment at 10:22 (count = 0), Skipped -Segment at 12:13 (count = 3), RegionEntry -Segment at 13:19 (count = 0), Skipped -Segment at 14:16 (count = 3), RegionEntry +Segment at 11:14 (count = 3), RegionEntry Segment at 14:22 (count = 0), Skipped Segment at 15:17 (count = 1), RegionEntry Segment at 16:27 (count = 0), Skipped Segment at 17:21 (count = 1), RegionEntry Segment at 17:33 (count = 0), Skipped Segment at 18:24 (count = 0), RegionEntry +Segment at 20:18 (count = 0), Skipped Segment at 21:14 (count = 2), RegionEntry Segment at 21:15 (count = 0), Skipped -Segment at 22:10 (count = 2), RegionEntry -Segment at 22:11 (count = 0), Skipped Segment at 23:9 (count = 0), RegionEntry Segment at 23:23 (count = 0), Skipped -Segment at 24:6 (count = 0), RegionEntry -Segment at 24:7 (count = 0), Skipped Segment at 25:1 (count = 1), RegionEntry Segment at 25:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.overflow.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.overflow.txt index 8696e102b56..fbc3adbfb6d 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.overflow.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.overflow.txt @@ -1,40 +1,39 @@ -Counter in file 0 16:9 -> 16:27, #1 +Counter in file 0 15:1 -> 16:27, #1 Counter in file 0 17:11 -> 17:24, (#1 + (#2 + (#3 + #4))) Counter in file 0 18:12 -> 18:26, ((#1 + (#2 + (#3 + #4))) - #5) Counter in file 0 18:27 -> 21:10, #2 Counter in file 0 21:19 -> 21:32, (((#1 + (#2 + (#3 + #4))) - #5) - #2) Counter in file 0 21:33 -> 24:10, #3 Counter in file 0 24:10 -> 24:11, #4 -Counter in file 0 24:10 -> 24:11, (#3 + #4) Counter in file 0 25:9 -> 25:23, (#2 + (#3 + #4)) Counter in file 0 27:5 -> 28:2, #5 -Counter in file 0 5:8 -> 5:18, #1 +Counter in file 0 4:1 -> 5:18, #1 Counter in file 0 5:19 -> 7:6, #2 Counter in file 0 7:6 -> 7:7, (#1 - #2) Counter in file 0 8:9 -> 13:2, (#2 + (#1 - #2)) Emitting segments for file: ../coverage/overflow.rs Combined regions: - 5:8 -> 5:18 (count=4) + 4:1 -> 5:18 (count=4) 5:19 -> 7:6 (count=1) 7:6 -> 7:7 (count=3) 8:9 -> 13:2 (count=4) - 16:9 -> 16:27 (count=1) + 15:1 -> 16:27 (count=1) 17:11 -> 17:24 (count=10) 18:12 -> 18:26 (count=10) 18:27 -> 21:10 (count=0) 21:19 -> 21:32 (count=10) 21:33 -> 24:10 (count=3) - 24:10 -> 24:11 (count=15) + 24:10 -> 24:11 (count=6) 25:9 -> 25:23 (count=9) 27:5 -> 28:2 (count=0) -Segment at 5:8 (count = 4), RegionEntry +Segment at 4:1 (count = 4), RegionEntry Segment at 5:18 (count = 0), Skipped Segment at 5:19 (count = 1), RegionEntry Segment at 7:6 (count = 3), RegionEntry Segment at 7:7 (count = 0), Skipped Segment at 8:9 (count = 4), RegionEntry Segment at 13:2 (count = 0), Skipped -Segment at 16:9 (count = 1), RegionEntry +Segment at 15:1 (count = 1), RegionEntry Segment at 16:27 (count = 0), Skipped Segment at 17:11 (count = 10), RegionEntry Segment at 17:24 (count = 0), Skipped @@ -45,7 +44,7 @@ Segment at 21:10 (count = 0), Skipped Segment at 21:19 (count = 10), RegionEntry Segment at 21:32 (count = 0), Skipped Segment at 21:33 (count = 3), RegionEntry -Segment at 24:10 (count = 15), RegionEntry +Segment at 24:10 (count = 6), RegionEntry Segment at 24:11 (count = 0), Skipped Segment at 25:9 (count = 9), RegionEntry Segment at 25:23 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.panic_unwind.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.panic_unwind.txt index 9602ff1a985..ad87f03026d 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.panic_unwind.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.panic_unwind.txt @@ -1,37 +1,40 @@ -Counter in file 0 14:9 -> 14:27, #1 +Counter in file 0 13:1 -> 14:27, #1 Counter in file 0 15:11 -> 15:24, (#1 + (#2 + (#3 + #4))) Counter in file 0 16:12 -> 16:26, ((#1 + (#2 + (#3 + #4))) - #5) Counter in file 0 16:27 -> 18:10, #2 Counter in file 0 18:19 -> 18:32, (((#1 + (#2 + (#3 + #4))) - #5) - #2) Counter in file 0 18:33 -> 20:10, #3 Counter in file 0 20:10 -> 20:11, #4 -Counter in file 0 20:10 -> 20:11, (#3 + #4) Counter in file 0 21:9 -> 21:23, (#2 + (#3 + #4)) Counter in file 0 23:5 -> 24:2, #5 -Counter in file 0 5:8 -> 5:20, #1 +Counter in file 0 4:1 -> 4:36, #1 +Counter in file 0 5:8 -> 5:20, (#1 + 0) Counter in file 0 6:9 -> 7:26, #2 Counter in file 0 8:12 -> 11:2, (#1 - #2) Emitting segments for file: ../coverage/panic_unwind.rs Combined regions: + 4:1 -> 4:36 (count=4) 5:8 -> 5:20 (count=4) 6:9 -> 7:26 (count=1) 8:12 -> 11:2 (count=3) - 14:9 -> 14:27 (count=1) + 13:1 -> 14:27 (count=1) 15:11 -> 15:24 (count=10) 16:12 -> 16:26 (count=10) 16:27 -> 18:10 (count=0) 18:19 -> 18:32 (count=10) 18:33 -> 20:10 (count=3) - 20:10 -> 20:11 (count=15) + 20:10 -> 20:11 (count=6) 21:9 -> 21:23 (count=9) 23:5 -> 24:2 (count=0) +Segment at 4:1 (count = 4), RegionEntry +Segment at 4:36 (count = 0), Skipped Segment at 5:8 (count = 4), RegionEntry Segment at 5:20 (count = 0), Skipped Segment at 6:9 (count = 1), RegionEntry Segment at 7:26 (count = 0), Skipped Segment at 8:12 (count = 3), RegionEntry Segment at 11:2 (count = 0), Skipped -Segment at 14:9 (count = 1), RegionEntry +Segment at 13:1 (count = 1), RegionEntry Segment at 14:27 (count = 0), Skipped Segment at 15:11 (count = 10), RegionEntry Segment at 15:24 (count = 0), Skipped @@ -42,7 +45,7 @@ Segment at 18:10 (count = 0), Skipped Segment at 18:19 (count = 10), RegionEntry Segment at 18:32 (count = 0), Skipped Segment at 18:33 (count = 3), RegionEntry -Segment at 20:10 (count = 15), RegionEntry +Segment at 20:10 (count = 6), RegionEntry Segment at 20:11 (count = 0), Skipped Segment at 21:9 (count = 9), RegionEntry Segment at 21:23 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.partial_eq.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.partial_eq.txt index cdef821c0ae..fa5c12bb6f8 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.partial_eq.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.partial_eq.txt @@ -1,27 +1,66 @@ +Counter in file 0 4:10 -> 4:15, 0 +Counter in file 0 4:24 -> 4:25, 0 +Counter in file 0 4:24 -> 4:25, 0 +Counter in file 0 4:32 -> 4:33, 0 +Counter in file 0 4:32 -> 4:33, 0 +Counter in file 0 4:35 -> 4:36, 0 +Counter in file 0 4:39 -> 4:40, 0 +Counter in file 0 4:39 -> 4:40, 0 +Counter in file 0 4:39 -> 4:40, 0 +Counter in file 0 4:39 -> 4:40, 0 +Counter in file 0 4:48 -> 4:49, 0 +Counter in file 0 4:51 -> 4:52, 0 +Counter in file 0 4:53 -> 4:54, 0 Counter in file 0 7:5 -> 7:6, #1 -Counter in file 0 21:11 -> 26:2, #1 +Counter in file 0 7:5 -> 7:6, 0 +Counter in file 0 7:5 -> 7:6, 0 +Counter in file 0 7:5 -> 7:6, 0 +Counter in file 0 8:5 -> 8:17, 0 +Counter in file 0 8:5 -> 8:17, 0 +Counter in file 0 8:5 -> 8:17, 0 +Counter in file 0 21:1 -> 26:2, #1 Counter in file 0 4:17 -> 4:22, #1 -Counter in file 0 13:9 -> 18:6, #1 +Counter in file 0 12:5 -> 18:6, #1 Counter in file 0 4:39 -> 4:40, #1 -Counter in file 0 4:48 -> 4:49, (#1 + 0) Counter in file 0 8:5 -> 8:17, #1 Emitting segments for file: ../coverage/partial_eq.rs Combined regions: + 4:10 -> 4:15 (count=0) 4:17 -> 4:22 (count=2) + 4:24 -> 4:25 (count=0) + 4:32 -> 4:33 (count=0) + 4:35 -> 4:36 (count=0) 4:39 -> 4:40 (count=1) - 4:48 -> 4:49 (count=1) + 4:48 -> 4:49 (count=0) + 4:51 -> 4:52 (count=0) + 4:53 -> 4:54 (count=0) 7:5 -> 7:6 (count=1) - 13:9 -> 18:6 (count=2) - 21:11 -> 26:2 (count=1) + 8:5 -> 8:17 (count=0) + 12:5 -> 18:6 (count=2) + 21:1 -> 26:2 (count=1) +Segment at 4:10 (count = 0), RegionEntry +Segment at 4:15 (count = 0), Skipped Segment at 4:17 (count = 2), RegionEntry Segment at 4:22 (count = 0), Skipped +Segment at 4:24 (count = 0), RegionEntry +Segment at 4:25 (count = 0), Skipped +Segment at 4:32 (count = 0), RegionEntry +Segment at 4:33 (count = 0), Skipped +Segment at 4:35 (count = 0), RegionEntry +Segment at 4:36 (count = 0), Skipped Segment at 4:39 (count = 1), RegionEntry Segment at 4:40 (count = 0), Skipped -Segment at 4:48 (count = 1), RegionEntry +Segment at 4:48 (count = 0), RegionEntry Segment at 4:49 (count = 0), Skipped +Segment at 4:51 (count = 0), RegionEntry +Segment at 4:52 (count = 0), Skipped +Segment at 4:53 (count = 0), RegionEntry +Segment at 4:54 (count = 0), Skipped Segment at 7:5 (count = 1), RegionEntry Segment at 7:6 (count = 0), Skipped -Segment at 13:9 (count = 2), RegionEntry +Segment at 8:5 (count = 0), RegionEntry +Segment at 8:17 (count = 0), Skipped +Segment at 12:5 (count = 2), RegionEntry Segment at 18:6 (count = 0), Skipped -Segment at 21:11 (count = 1), RegionEntry +Segment at 21:1 (count = 1), RegionEntry Segment at 26:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.simple_loop.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.simple_loop.txt index 6ea09248d65..c0b09486dfb 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.simple_loop.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.simple_loop.txt @@ -1,26 +1,20 @@ -Counter in file 0 7:9 -> 9:26, #1 -Counter in file 0 12:9 -> 12:16, (#1 + 0) +Counter in file 0 3:1 -> 12:16, #1 Counter in file 0 13:5 -> 18:6, #2 Counter in file 0 18:6 -> 18:7, (#1 - #2) Counter in file 0 23:13 -> 25:14, ((#2 + (#1 - #2)) + #3) Counter in file 0 27:13 -> 27:18, (((#2 + (#1 - #2)) + #3) - #3) -Counter in file 0 30:9 -> 32:10, #3 -Counter in file 0 34:6 -> 34:7, (#2 + (#1 - #2)) +Counter in file 0 29:10 -> 32:10, #3 Counter in file 0 35:1 -> 35:2, ((((#2 + (#1 - #2)) + #3) - #3) + 0) Emitting segments for file: ../coverage/simple_loop.rs Combined regions: - 7:9 -> 9:26 (count=1) - 12:9 -> 12:16 (count=1) + 3:1 -> 12:16 (count=1) 13:5 -> 18:6 (count=1) 18:6 -> 18:7 (count=0) 23:13 -> 25:14 (count=11) 27:13 -> 27:18 (count=1) - 30:9 -> 32:10 (count=10) - 34:6 -> 34:7 (count=1) + 29:10 -> 32:10 (count=10) 35:1 -> 35:2 (count=1) -Segment at 7:9 (count = 1), RegionEntry -Segment at 9:26 (count = 0), Skipped -Segment at 12:9 (count = 1), RegionEntry +Segment at 3:1 (count = 1), RegionEntry Segment at 12:16 (count = 0), Skipped Segment at 13:5 (count = 1), RegionEntry Segment at 18:6 (count = 0), RegionEntry @@ -29,9 +23,7 @@ Segment at 23:13 (count = 11), RegionEntry Segment at 25:14 (count = 0), Skipped Segment at 27:13 (count = 1), RegionEntry Segment at 27:18 (count = 0), Skipped -Segment at 30:9 (count = 10), RegionEntry +Segment at 29:10 (count = 10), RegionEntry Segment at 32:10 (count = 0), Skipped -Segment at 34:6 (count = 1), RegionEntry -Segment at 34:7 (count = 0), Skipped Segment at 35:1 (count = 1), RegionEntry Segment at 35:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.simple_match.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.simple_match.txt index 1682a379bc0..c01630bd87b 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.simple_match.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.simple_match.txt @@ -1,5 +1,4 @@ -Counter in file 0 7:9 -> 9:26, #1 -Counter in file 0 10:8 -> 10:15, (#1 + 0) +Counter in file 0 3:1 -> 10:15, #1 Counter in file 0 10:16 -> 12:6, #2 Counter in file 0 12:6 -> 12:7, (#1 - #2) Counter in file 0 15:9 -> 15:10, (((#2 + (#1 - #2)) + (#3 + #4)) - #5) @@ -7,16 +6,12 @@ Counter in file 0 17:9 -> 17:13, ((#2 + (#1 - #2)) + (#3 + #4)) Counter in file 0 22:13 -> 22:22, ((((#2 + (#1 - #2)) + (#3 + #4)) - #5) + 0) Counter in file 0 24:13 -> 24:14, #3 Counter in file 0 26:17 -> 28:18, ((((#2 + (#1 - #2)) + (#3 + #4)) - #5) + 0) -Counter in file 0 28:18 -> 28:19, ((((#2 + (#1 - #2)) + (#3 + #4)) - #5) - #3) Counter in file 0 30:13 -> 37:14, (#3 + 0) Counter in file 0 40:13 -> 40:15, #4 -Counter in file 0 42:6 -> 42:7, (#2 + (#1 - #2)) -Counter in file 0 42:6 -> 42:7, (#3 + #4) Counter in file 0 43:1 -> 43:2, #5 Emitting segments for file: ../coverage/simple_match.rs Combined regions: - 7:9 -> 9:26 (count=1) - 10:8 -> 10:15 (count=1) + 3:1 -> 10:15 (count=1) 10:16 -> 12:6 (count=1) 12:6 -> 12:7 (count=0) 15:9 -> 15:10 (count=2) @@ -24,14 +19,10 @@ Combined regions: 22:13 -> 22:22 (count=2) 24:13 -> 24:14 (count=1) 26:17 -> 28:18 (count=2) - 28:18 -> 28:19 (count=1) 30:13 -> 37:14 (count=1) 40:13 -> 40:15 (count=1) - 42:6 -> 42:7 (count=3) 43:1 -> 43:2 (count=1) -Segment at 7:9 (count = 1), RegionEntry -Segment at 9:26 (count = 0), Skipped -Segment at 10:8 (count = 1), RegionEntry +Segment at 3:1 (count = 1), RegionEntry Segment at 10:15 (count = 0), Skipped Segment at 10:16 (count = 1), RegionEntry Segment at 12:6 (count = 0), RegionEntry @@ -45,13 +36,10 @@ Segment at 22:22 (count = 0), Skipped Segment at 24:13 (count = 1), RegionEntry Segment at 24:14 (count = 0), Skipped Segment at 26:17 (count = 2), RegionEntry -Segment at 28:18 (count = 1), RegionEntry -Segment at 28:19 (count = 0), Skipped +Segment at 28:18 (count = 0), Skipped Segment at 30:13 (count = 1), RegionEntry Segment at 37:14 (count = 0), Skipped Segment at 40:13 (count = 1), RegionEntry Segment at 40:15 (count = 0), Skipped -Segment at 42:6 (count = 3), RegionEntry -Segment at 42:7 (count = 0), Skipped Segment at 43:1 (count = 1), RegionEntry Segment at 43:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.tight_inf_loop.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.tight_inf_loop.txt index 5887658fe67..a6cd4298808 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.tight_inf_loop.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.tight_inf_loop.txt @@ -1,10 +1,10 @@ -Counter in file 0 2:8 -> 2:13, #1 -Counter in file 0 5:1 -> 5:2, (#1 - #2) +Counter in file 0 1:1 -> 2:13, #1 +Counter in file 0 4:6 -> 5:2, (#1 - #2) Emitting segments for file: ../coverage/tight_inf_loop.rs Combined regions: - 2:8 -> 2:13 (count=1) - 5:1 -> 5:2 (count=1) -Segment at 2:8 (count = 1), RegionEntry + 1:1 -> 2:13 (count=1) + 4:6 -> 5:2 (count=1) +Segment at 1:1 (count = 1), RegionEntry Segment at 2:13 (count = 0), Skipped -Segment at 5:1 (count = 1), RegionEntry +Segment at 4:6 (count = 1), RegionEntry Segment at 5:2 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.try_error_result.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.try_error_result.txt index 5b7f5496af8..2b7962df2f9 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.try_error_result.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.try_error_result.txt @@ -1,4 +1,4 @@ -Counter in file 0 13:9 -> 14:23, #1 +Counter in file 0 12:1 -> 14:23, #1 Counter in file 0 17:9 -> 17:10, ((#1 + (#2 + #3)) - #4) Counter in file 0 19:9 -> 19:14, (#1 + (#2 + #3)) Counter in file 0 21:9 -> 25:26, (((#1 + (#2 + #3)) - #4) + 0) @@ -8,22 +8,19 @@ Counter in file 0 28:13 -> 28:42, (#8 - #5) Counter in file 0 28:42 -> 28:43, #6 Counter in file 0 32:13 -> 32:42, (((#1 + (#2 + #3)) - #4) - #8) Counter in file 0 32:42 -> 32:43, #7 -Counter in file 0 33:10 -> 33:11, #2 -Counter in file 0 33:10 -> 33:11, #3 -Counter in file 0 34:6 -> 34:7, (#2 + #3) Counter in file 0 35:5 -> 35:11, #4 Counter in file 0 36:1 -> 36:2, ((#5 + (#6 + #7)) + #4) -Counter in file 0 5:8 -> 5:20, #1 +Counter in file 0 4:1 -> 5:20, #1 Counter in file 0 6:9 -> 6:16, #2 Counter in file 0 8:9 -> 8:15, (#1 - #2) Counter in file 0 10:1 -> 10:2, (#2 + (#1 - #2)) Emitting segments for file: ../coverage/try_error_result.rs Combined regions: - 5:8 -> 5:20 (count=6) + 4:1 -> 5:20 (count=6) 6:9 -> 6:16 (count=1) 8:9 -> 8:15 (count=5) 10:1 -> 10:2 (count=6) - 13:9 -> 14:23 (count=1) + 12:1 -> 14:23 (count=1) 17:9 -> 17:10 (count=6) 19:9 -> 19:14 (count=6) 21:9 -> 25:26 (count=6) @@ -33,11 +30,9 @@ Combined regions: 28:42 -> 28:43 (count=0) 32:13 -> 32:42 (count=5) 32:42 -> 32:43 (count=0) - 33:10 -> 33:11 (count=5) - 34:6 -> 34:7 (count=5) 35:5 -> 35:11 (count=0) 36:1 -> 36:2 (count=1) -Segment at 5:8 (count = 6), RegionEntry +Segment at 4:1 (count = 6), RegionEntry Segment at 5:20 (count = 0), Skipped Segment at 6:9 (count = 1), RegionEntry Segment at 6:16 (count = 0), Skipped @@ -45,7 +40,7 @@ Segment at 8:9 (count = 5), RegionEntry Segment at 8:15 (count = 0), Skipped Segment at 10:1 (count = 6), RegionEntry Segment at 10:2 (count = 0), Skipped -Segment at 13:9 (count = 1), RegionEntry +Segment at 12:1 (count = 1), RegionEntry Segment at 14:23 (count = 0), Skipped Segment at 17:9 (count = 6), RegionEntry Segment at 17:10 (count = 0), Skipped @@ -62,10 +57,6 @@ Segment at 28:43 (count = 0), Skipped Segment at 32:13 (count = 5), RegionEntry Segment at 32:42 (count = 0), RegionEntry Segment at 32:43 (count = 0), Skipped -Segment at 33:10 (count = 5), RegionEntry -Segment at 33:11 (count = 0), Skipped -Segment at 34:6 (count = 5), RegionEntry -Segment at 34:7 (count = 0), Skipped Segment at 35:5 (count = 0), RegionEntry Segment at 35:11 (count = 0), Skipped Segment at 36:1 (count = 1), RegionEntry diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.while.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.while.txt index b0e881da7c8..90629ac84cd 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.while.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.while.txt @@ -1,14 +1,14 @@ -Counter in file 0 2:9 -> 2:16, #1 +Counter in file 0 1:1 -> 2:16, #1 Counter in file 0 3:11 -> 3:20, (#1 + #2) Counter in file 0 3:21 -> 4:6, #2 Counter in file 0 5:1 -> 5:2, ((#1 + #2) - #2) Emitting segments for file: ../coverage/while.rs Combined regions: - 2:9 -> 2:16 (count=1) + 1:1 -> 2:16 (count=1) 3:11 -> 3:20 (count=1) 3:21 -> 4:6 (count=0) 5:1 -> 5:2 (count=1) -Segment at 2:9 (count = 1), RegionEntry +Segment at 1:1 (count = 1), RegionEntry Segment at 2:16 (count = 0), Skipped Segment at 3:11 (count = 1), RegionEntry Segment at 3:20 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.while_early_ret.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.while_early_ret.txt index 7e79a8f00e1..12f444945a1 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.while_early_ret.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.while_early_ret.txt @@ -1,24 +1,24 @@ -Counter in file 0 5:9 -> 5:27, #1 +Counter in file 0 4:1 -> 5:27, #1 Counter in file 0 7:9 -> 9:10, (#1 + #2) Counter in file 0 12:13 -> 14:14, ((#1 + #2) - #3) Counter in file 0 18:21 -> 20:22, (((#1 + #2) - #3) - #2) Counter in file 0 22:21 -> 22:27, #4 Counter in file 0 26:21 -> 26:27, #5 -Counter in file 0 30:9 -> 32:10, #2 +Counter in file 0 29:10 -> 32:10, #2 Counter in file 0 35:5 -> 35:11, #3 Counter in file 0 36:1 -> 36:2, ((#4 + #5) + #3) Emitting segments for file: ../coverage/while_early_ret.rs Combined regions: - 5:9 -> 5:27 (count=1) + 4:1 -> 5:27 (count=1) 7:9 -> 9:10 (count=7) 12:13 -> 14:14 (count=7) 18:21 -> 20:22 (count=1) 22:21 -> 22:27 (count=0) 26:21 -> 26:27 (count=1) - 30:9 -> 32:10 (count=6) + 29:10 -> 32:10 (count=6) 35:5 -> 35:11 (count=0) 36:1 -> 36:2 (count=1) -Segment at 5:9 (count = 1), RegionEntry +Segment at 4:1 (count = 1), RegionEntry Segment at 5:27 (count = 0), Skipped Segment at 7:9 (count = 7), RegionEntry Segment at 9:10 (count = 0), Skipped @@ -30,7 +30,7 @@ Segment at 22:21 (count = 0), RegionEntry Segment at 22:27 (count = 0), Skipped Segment at 26:21 (count = 1), RegionEntry Segment at 26:27 (count = 0), Skipped -Segment at 30:9 (count = 6), RegionEntry +Segment at 29:10 (count = 6), RegionEntry Segment at 32:10 (count = 0), Skipped Segment at 35:5 (count = 0), RegionEntry Segment at 35:11 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.yield.txt b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.yield.txt index a1075358211..6ed3e465611 100644 --- a/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.yield.txt +++ b/src/test/run-make-fulldeps/coverage-reports/expected_show_coverage_counters.yield.txt @@ -1,4 +1,5 @@ -Counter in file 0 8:9 -> 8:22, #1 +Counter in file 0 7:1 -> 7:11, #1 +Counter in file 0 8:9 -> 8:22, (#1 + 0) Counter in file 0 13:11 -> 14:35, (#1 + 0) Counter in file 0 14:39 -> 14:41, #4 Counter in file 0 15:14 -> 15:52, (#2 + #3) @@ -14,16 +15,17 @@ Counter in file 0 33:11 -> 34:35, (#9 + 0) Counter in file 0 34:39 -> 34:41, #12 Counter in file 0 35:14 -> 35:52, (#10 + #11) Counter in file 0 37:1 -> 37:2, (#12 + 0) -Counter in file 0 9:9 -> 9:16, #1 +Counter in file 0 8:28 -> 9:16, #1 Counter in file 0 10:16 -> 11:6, #2 -Counter in file 0 23:9 -> 23:16, #1 +Counter in file 0 22:28 -> 23:16, #1 Counter in file 0 24:9 -> 24:16, #2 Counter in file 0 25:9 -> 25:16, #3 Counter in file 0 26:16 -> 27:6, #4 Emitting segments for file: ../coverage/yield.rs Combined regions: + 7:1 -> 7:11 (count=1) 8:9 -> 8:22 (count=1) - 9:9 -> 9:16 (count=1) + 8:28 -> 9:16 (count=1) 10:16 -> 11:6 (count=1) 13:11 -> 14:35 (count=1) 14:39 -> 14:41 (count=1) @@ -33,7 +35,7 @@ Combined regions: 18:44 -> 18:46 (count=1) 19:14 -> 19:52 (count=0) 22:9 -> 22:22 (count=1) - 23:9 -> 23:16 (count=1) + 22:28 -> 23:16 (count=1) 24:9 -> 24:16 (count=1) 25:9 -> 25:16 (count=0) 26:16 -> 27:6 (count=0) @@ -44,9 +46,11 @@ Combined regions: 34:39 -> 34:41 (count=1) 35:14 -> 35:52 (count=0) 37:1 -> 37:2 (count=1) +Segment at 7:1 (count = 1), RegionEntry +Segment at 7:11 (count = 0), Skipped Segment at 8:9 (count = 1), RegionEntry Segment at 8:22 (count = 0), Skipped -Segment at 9:9 (count = 1), RegionEntry +Segment at 8:28 (count = 1), RegionEntry Segment at 9:16 (count = 0), Skipped Segment at 10:16 (count = 1), RegionEntry Segment at 11:6 (count = 0), Skipped @@ -66,7 +70,7 @@ Segment at 19:14 (count = 0), RegionEntry Segment at 19:52 (count = 0), Skipped Segment at 22:9 (count = 1), RegionEntry Segment at 22:22 (count = 0), Skipped -Segment at 23:9 (count = 1), RegionEntry +Segment at 22:28 (count = 1), RegionEntry Segment at 23:16 (count = 0), Skipped Segment at 24:9 (count = 1), RegionEntry Segment at 24:16 (count = 0), Skipped diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/Makefile b/src/test/run-make-fulldeps/coverage-spanview-deadcode/Makefile deleted file mode 100644 index 2bc61fccde4..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/Makefile +++ /dev/null @@ -1,11 +0,0 @@ -# needs-profiler-support -# ignore-msvc - -# LINK_DEAD_CODE requires ignore-msvc due to Issue #76038 -LINK_DEAD_CODE=yes - --include ../coverage-spanview/Makefile - -# ISSUE(76038): When targeting MSVC, Rust binaries built with both `-Z instrument-coverage` and -# `-C link-dead-code` typically crash (with a seg-fault) or at best generate an empty `*.profraw`. -# See ../coverage/coverage_tools.mk for more information. diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.abort/abort.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.abort/abort.main.-------.InstrumentCoverage.0.html deleted file mode 100644 index 63f7d2dd2d9..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.abort/abort.main.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - -abort.main - Coverage Spans - - - -
fn main() -> Result<(),u8> { - let @0⦊mut countdown = 10⦉@0; - while @1,2⦊countdown > 0⦉@1,2 { - if @3,5⦊countdown < 5⦉@3,5 @6,8,9⦊{ - might_abort(false); - }⦉@6,8,9@7⦊⦉@7 - @10,11⦊countdown -= 1⦉@10,11; - } - @4⦊Ok(()) -}⦉@4
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.abort/abort.might_abort.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.abort/abort.might_abort.-------.InstrumentCoverage.0.html deleted file mode 100644 index 444ca72ce4c..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.abort/abort.might_abort.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - -abort.might_abort - Coverage Spans - - - -
fn might_abort(should_abort: bool) { - if @0⦊should_abort⦉@0 { - @1,3,4,5⦊println!("aborting..."); - panic!("panics and aborts");⦉@1,3,4,5 - } else @2,6,7⦊{ - println!("Don't Panic"); - } -}⦉@2,6,7
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.assert/assert.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.assert/assert.main.-------.InstrumentCoverage.0.html deleted file mode 100644 index d84e200cc1a..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.assert/assert.main.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - -assert.main - Coverage Spans - - - -
fn main() -> Result<(),u8> { - let @0⦊mut countdown = 10⦉@0; - while @1,2⦊countdown > 0⦉@1,2 { - if @3,5⦊countdown == 1⦉@3,5 @6,8,9⦊{ - might_fail_assert(3); - }⦉@6,8,9 else if @7⦊countdown < 5⦉@7 @10,12,13⦊{ - might_fail_assert(2); - }⦉@10,12,13@11⦊⦉@11@14⦊⦉@14 - @15,16⦊countdown -= 1⦉@15,16; - } - @4⦊Ok(()) -}⦉@4
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.assert/assert.might_fail_assert.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.assert/assert.might_fail_assert.-------.InstrumentCoverage.0.html deleted file mode 100644 index c03fc8e416e..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.assert/assert.might_fail_assert.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - -assert.might_fail_assert - Coverage Spans - - - -
fn might_fail_assert(one_plus_one: u32) { - @0,1,2,3,4⦊println!("does 1 + 1 = {}?", one_plus_one);⦉@0,1,2,3,4 - assert_eq!(@0,1,2,3,4⦊1 + 1⦉@0,1,2,3,4, one_plus_one, @5,7,8,9,10,11,12⦊"the argument was wrong"⦉@5,7,8,9,10,11,12); -}@6⦊⦉@6
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#0}.-------.InstrumentCoverage.0.html deleted file mode 100644 index 4689c34ca0f..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#0}.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - -async.executor-block_on-VTABLE-{closure#0} - Coverage Spans - - - -
{ - @0,1,2,3⦊$crate::rt::begin_panic_fmt(&$crate::format_args!($fmt, $($arg)+))⦉@0,1,2,3 - }
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#1}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#1}.-------.InstrumentCoverage.0.html deleted file mode 100644 index ccfb1dd0a37..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#1}.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - -async.executor-block_on-VTABLE-{closure#1} - Coverage Spans - - - -
{ - @0,1,2,3⦊$crate::rt::begin_panic_fmt(&$crate::format_args!($fmt, $($arg)+))⦉@0,1,2,3 - }
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#2}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#2}.-------.InstrumentCoverage.0.html deleted file mode 100644 index 2d402b83081..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#2}.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - -async.executor-block_on-VTABLE-{closure#2} - Coverage Spans - - - -
{ - @0,1,2,3⦊$crate::rt::begin_panic_fmt(&$crate::format_args!($fmt, $($arg)+))⦉@0,1,2,3 - }
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.executor-block_on.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.executor-block_on.-------.InstrumentCoverage.0.html deleted file mode 100644 index 583a67e6c7f..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.executor-block_on.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,226 +0,0 @@ - - - - -async.executor-block_on - Coverage Spans - - - -
pub fn block_on<F: Future>(mut future: F) -> F::Output { - let @0,1,2,3,4,5⦊mut future = unsafe { Pin::new_unchecked(&mut future) }; - - static VTABLE: RawWakerVTable = RawWakerVTable::new( - |_| unimplemented!("clone"), - |_| unimplemented!("wake"), - |_| unimplemented!("wake_by_ref"), - |_| (), - ); - let waker = unsafe { Waker::from_raw(RawWaker::new(core::ptr::null(), &VTABLE)) }; - let mut context = Context::from_waker(&waker)⦉@0,1,2,3,4,5; - - loop { - if let Poll::Ready(@10,12,14,15,16,17⦊val⦉@10,12,14,15,16,17) = @6,7,8,9⦊future.as_mut().poll(&mut context)⦉@6,7,8,9 { - break @10,12,14,15,16,17⦊val⦉@10,12,14,15,16,17; - } - }@11,13⦊⦉@11,13 - }@10,12,14,15,16,17⦊⦉@10,12,14,15,16,17
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.foo-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.foo-{closure#0}.-------.InstrumentCoverage.0.html deleted file mode 100644 index d3b9609a7f3..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.foo-{closure#0}.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - -async.foo-{closure#0} - Coverage Spans - - - -
{ @0⦊[false; 10] }⦉@0
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.g-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.g-{closure#0}.-------.InstrumentCoverage.0.html deleted file mode 100644 index 9967a387a05..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.g-{closure#0}.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - -async.g-{closure#0} - Coverage Spans - - - -
@0,2,3⦊{ - match x⦉@0,2,3 { - @16⦊y⦉@16 if @0,2,3⦊f()⦉@0,2,3.await == @9,12,14,15⦊y⦉@9,12,14,15@17⦊⦉@17 => @16⦊()⦉@16, - _ => @1⦊()⦉@1, - } -}@18,19⦊⦉@18,19
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.h-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.h-{closure#0}.-------.InstrumentCoverage.0.html deleted file mode 100644 index 986a4b198cb..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.h-{closure#0}.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - -async.h-{closure#0} - Coverage Spans - - - -
@0,2,3⦊{ - match x⦉@0,2,3 { - @17⦊y⦉@17 if @0,2,3⦊foo()⦉@0,2,3.await[@9,12,14,15,16⦊y⦉@9,12,14,15,16]@18⦊⦉@18 => @17⦊()⦉@17, - _ => @1⦊()⦉@1, - } -}@19,20⦊⦉@19,20
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.i-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.i-{closure#0}.-------.InstrumentCoverage.0.html deleted file mode 100644 index ab9bbf85dd7..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.i-{closure#0}.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - -async.i-{closure#0} - Coverage Spans - - - -
@0,2,3⦊{ - match x⦉@0,2,3 { - @17⦊y⦉@17 if @0,2,3⦊f()⦉@0,2,3.await == @9,12,14,15,16⦊y + 1⦉@9,12,14,15,16@18⦊⦉@18 => @17⦊()⦉@17, - _ => @1⦊()⦉@1, - } -}@19,20⦊⦉@19,20
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.main.-------.InstrumentCoverage.0.html deleted file mode 100644 index 007da5c0ec1..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.main.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - -async.main - Coverage Spans - - - -
fn main() @0,1,2,3,4,5,6,7,8,9⦊{ - let _ = g(10); - let _ = h(9); - let mut future = Box::pin(i(8)); - executor::block_on(future.as_mut()); -}⦉@0,1,2,3,4,5,6,7,8,9
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.closure/closure.main-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.closure/closure.main-{closure#0}.-------.InstrumentCoverage.0.html deleted file mode 100644 index b68c0a1cabe..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.closure/closure.main-{closure#0}.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - -closure.main-{closure#0} - Coverage Spans - - - -
|| - { - let @0⦊mut countdown = 0⦉@0; - if @0⦊is_false⦉@0 @1,3⦊{ - countdown = 10; - }⦉@1,3@2⦊⦉@2 - @4,5⦊"alt string 2".to_owned() - }⦉@4,5
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.closure/closure.main-{closure#1}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.closure/closure.main-{closure#1}.-------.InstrumentCoverage.0.html deleted file mode 100644 index 9358fd4b136..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.closure/closure.main-{closure#1}.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - -closure.main-{closure#1} - Coverage Spans - - - -
|| - { - let @0⦊mut countdown = 0⦉@0; - if @0⦊is_false⦉@0 @1,3⦊{ - countdown = 10; - }⦉@1,3@2⦊⦉@2 - @4,5⦊"alt string 4".to_owned() - }⦉@4,5
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.closure/closure.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.closure/closure.main.-------.InstrumentCoverage.0.html deleted file mode 100644 index 2d41918efb2..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.closure/closure.main.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,4515 +0,0 @@ - - - - -closure.main - Coverage Spans - - - -
fn main() @0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34⦊{ - // Initialize test constants in a way that cannot be determined at compile time, to ensure - // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from - // dependent conditions. - let is_true = std::env::args().len() == 1; - let is_false = ! is_true; - - let mut some_string = Some(String::from("the string content")); - println!( - "The string or alt: {}" - , - some_string - . - unwrap_or_else - ( - ⦉@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34|| - { - let mut countdown = 0; - if is_false { - countdown = 10; - } - "alt string 1".to_owned() - }@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34⦊ - ) - ); - - some_string = Some(String::from("the string content")); - let - a - = - ⦉@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34|| - { - let mut countdown = 0; - if is_false { - countdown = 10; - } - "alt string 2".to_owned() - }@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34⦊; - println!( - "The string or alt: {}" - , - some_string - . - unwrap_or_else - ( - a - ) - ); - - some_string = None; - println!( - "The string or alt: {}" - , - some_string - . - unwrap_or_else - ( - ⦉@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34|| - { - let mut countdown = 0; - if is_false { - countdown = 10; - } - "alt string 3".to_owned() - }@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34⦊ - ) - ); - - some_string = None; - let - a - = - ⦉@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34|| - { - let mut countdown = 0; - if is_false { - countdown = 10; - } - "alt string 4".to_owned() - }@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34⦊; - println!( - "The string or alt: {}" - , - some_string - . - unwrap_or_else - ( - a - ) - ); -}⦉@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.conditions/conditions.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.conditions/conditions.main.-------.InstrumentCoverage.0.html deleted file mode 100644 index e6f95385910..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.conditions/conditions.main.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,353 +0,0 @@ - - - - -conditions.main - Coverage Spans - - - -
fn main() { - let @0⦊mut countdown = 0⦉@0; - if @0⦊true⦉@0 @1,3⦊{ - countdown = 10; - }⦉@1,3@2⦊⦉@2 - - const B: u32 = 100; - let @25⦊x⦉@25 = if @4⦊countdown > 7⦉@4 { - @5,7,8⦊countdown -= 4; - B⦉@5,7,8 - } else if @6⦊countdown > 2⦉@6 { - if @9,11⦊countdown < 1⦉@9,11 || @18⦊countdown > 5⦉@18@16⦊⦉@16@17⦊⦉@17 || @14⦊countdown != 9⦉@14@12⦊⦉@12@13⦊⦉@13 @20,22⦊{ - countdown = 0; - }⦉@20,22@21⦊⦉@21 - @23,24⦊countdown -= 5; - countdown⦉@23,24 - } else { - @10⦊return⦉@10; - }; - - let @25⦊mut countdown = 0⦉@25; - if @25⦊true⦉@25 @26,28⦊{ - countdown = 10; - }⦉@26,28@27⦊⦉@27 - - if @29⦊countdown > 7⦉@29 @30,32,33⦊{ - countdown -= 4; - }⦉@30,32,33 else if @31⦊countdown > 2⦉@31 { - if @34,36⦊countdown < 1⦉@34,36 || @43⦊countdown > 5⦉@43@41⦊⦉@41@42⦊⦉@42 || @39⦊countdown != 9⦉@39@37⦊⦉@37@38⦊⦉@38 @45,47⦊{ - countdown = 0; - }⦉@45,47@46⦊⦉@46 - @48,49⦊countdown -= 5⦉@48,49; - } else { - @35⦊return⦉@35; - } - - if @50⦊true⦉@50 { - // Demonstrate the difference with `TerminatorKind::Assert` as of 2020-11-15. Assert is no - // longer treated as a `BasicCoverageBlock` terminator, which changed the coverage region, - // for the executed `then` block above, to include the closing brace on line 30. That - // changed the line count, but the coverage code region (for the `else if` condition) is - // still valid. - // - // Note that `if` (then) and `else` blocks include the closing brace in their coverage - // code regions when the last line in the block ends in a semicolon, because the Rust - // compiler inserts a `StatementKind::Assign` to assign `const ()` to a `Place`, for the - // empty value for the executed block. When the last line does not end in a semicolon - // (that is, when the block actually results in a value), the additional `Assign` is not - // generated, and the brace is not included. - let @51,53⦊mut countdown = 0⦉@51,53; - if @51,53⦊true⦉@51,53 @54,56⦊{ - countdown = 10; - }⦉@54,56@55⦊⦉@55 - - if @57⦊countdown > 7⦉@57 @58,60,61⦊{ - countdown -= 4; - }⦉@58,60,61 - // The closing brace of the `then` branch is now included in the coverage region, and shown - // as "executed" (giving its line a count of 1 here). Since, in the original version above, - // the closing brace shares the same line as the `else if` conditional expression (which is - // not executed if the first `then` condition is true), only the condition's code region is - // marked with a count of 0 now. - else if @59⦊countdown > 2⦉@59 { - if @62,64⦊countdown < 1⦉@62,64 || @71⦊countdown > 5⦉@71@69⦊⦉@69@70⦊⦉@70 || @67⦊countdown != 9⦉@67@65⦊⦉@65@66⦊⦉@66 @73,75⦊{ - countdown = 0; - }⦉@73,75@74⦊⦉@74 - @76,77⦊countdown -= 5⦉@76,77; - } else { - @63⦊return⦉@63; - } - }@78⦊⦉@78@52⦊⦉@52 - - let @79⦊mut countdown = 0⦉@79; - if @79⦊true⦉@79 @80,82⦊{ - countdown = 1; - }⦉@80,82@81⦊⦉@81 - - let @106⦊z⦉@106 = if @83⦊countdown > 7⦉@83 @84,86,87⦊{ - countdown -= 4; - }⦉@84,86,87 else if @85⦊countdown > 2⦉@85 { - if @88,90⦊countdown < 1⦉@88,90 || @97⦊countdown > 5⦉@97@95⦊⦉@95@96⦊⦉@96 || @93⦊countdown != 9⦉@93@91⦊⦉@91@92⦊⦉@92 @99,101⦊{ - countdown = 0; - }⦉@99,101@100⦊⦉@100 - @102,103⦊countdown -= 5⦉@102,103; - } else { - let @89,104,105⦊should_be_reachable = countdown; - println!("reached"); - return⦉@89,104,105; - }; - - let @127⦊w⦉@127 = if @106⦊countdown > 7⦉@106 @107,109,110⦊{ - countdown -= 4; - }⦉@107,109,110 else if @108⦊countdown > 2⦉@108 { - if @111,113⦊countdown < 1⦉@111,113 || @120⦊countdown > 5⦉@120@118⦊⦉@118@119⦊⦉@119 || @116⦊countdown != 9⦉@116@114⦊⦉@114@115⦊⦉@115 @122,124⦊{ - countdown = 0; - }⦉@122,124@123⦊⦉@123 - @125,126⦊countdown -= 5⦉@125,126; - } else { - @112⦊return⦉@112; - }; -}@130⦊⦉@130@131⦊⦉@131
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.drop_trait/drop_trait.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.drop_trait/drop_trait.main.-------.InstrumentCoverage.0.html deleted file mode 100644 index 8d6f936aadc..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.drop_trait/drop_trait.main.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - -drop_trait.main - Coverage Spans - - - -
fn main() -> Result<(),u8> { - let @0⦊_firecracker = Firework { strength: 1 }; - - let _tnt = Firework { strength: 100 }⦉@0; - - if @0⦊true⦉@0 { - @1,3,4,5,9,10⦊println!("Exiting with error..."); - return Err(1)⦉@1,3,4,5,9,10; - } - - let _ = @2,6,7,8⦊Firework { strength: 1000 }; - - Ok(())⦉@2,6,7,8 -}@11⦊⦉@11
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.drop_trait/drop_trait.{impl#0}-drop.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.drop_trait/drop_trait.{impl#0}-drop.-------.InstrumentCoverage.0.html deleted file mode 100644 index 60a24df9ba6..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.drop_trait/drop_trait.{impl#0}-drop.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - -drop_trait.{impl#0}-drop - Coverage Spans - - - -
fn drop(&mut self) @0,1,2,3⦊{ - println!("BOOM times {}!!!", self.strength); - }⦉@0,1,2,3
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.generics/generics.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.generics/generics.main.-------.InstrumentCoverage.0.html deleted file mode 100644 index 3f90fd1e821..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.generics/generics.main.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - -generics.main - Coverage Spans - - - -
fn main() -> Result<(),u8> { - let @0,1,2,3⦊mut firecracker = Firework { strength: 1 }; - firecracker.set_strength(2); - - let mut tnt = Firework { strength: 100.1 }; - tnt.set_strength(200.1); - tnt.set_strength(300.3)⦉@0,1,2,3; - - if @0,1,2,3⦊true⦉@0,1,2,3 { - @4,6,7,8,12,13⦊println!("Exiting with error..."); - return Err(1)⦉@4,6,7,8,12,13; - } - - let _ = @5,9,10,11⦊Firework { strength: 1000 }; - - Ok(())⦉@5,9,10,11 -}@14⦊⦉@14
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.generics/generics.{impl#0}-set_strength.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.generics/generics.{impl#0}-set_strength.-------.InstrumentCoverage.0.html deleted file mode 100644 index b10da561da9..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.generics/generics.{impl#0}-set_strength.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - -generics.{impl#0}-set_strength - Coverage Spans - - - -
fn set_strength(&mut self, new_strength: T) @0⦊{ - self.strength = new_strength; - }⦉@0
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.generics/generics.{impl#1}-drop.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.generics/generics.{impl#1}-drop.-------.InstrumentCoverage.0.html deleted file mode 100644 index 0515e8d7b8c..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.generics/generics.{impl#1}-drop.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - -generics.{impl#1}-drop - Coverage Spans - - - -
fn drop(&mut self) @0,1,2,3⦊{ - println!("BOOM times {}!!!", self.strength); - }⦉@0,1,2,3
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.if/if.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.if/if.main.-------.InstrumentCoverage.0.html deleted file mode 100644 index e926079a428..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.if/if.main.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - -if.main - Coverage Spans - - - -
fn main() { - // Initialize test constants in a way that cannot be determined at compile time, to ensure - // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from - // dependent conditions. - let - @0,1,2,3⦊is_true - = - std::env::args().len() - == - 1 - ; - let - mut - countdown - = - 0⦉@0,1,2,3 - ; - if - @0,1,2,3⦊is_true⦉@0,1,2,3 - @4,6⦊{ - countdown - = - 10 - ; - }⦉@4,6@5⦊⦉@5 -}@7⦊⦉@7
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.if_else/if_else.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.if_else/if_else.main.-------.InstrumentCoverage.0.html deleted file mode 100644 index 586014afeba..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.if_else/if_else.main.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - -if_else.main - Coverage Spans - - - -
fn main() { - // Initialize test constants in a way that cannot be determined at compile time, to ensure - // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from - // dependent conditions. - let @0,1,2,3⦊is_true = std::env::args().len() == 1; - - let mut countdown = 0; - if - is_true⦉@0,1,2,3 - @4,6⦊{ - countdown - = - 10 - ; - }⦉@4,6 - else // Note coverage region difference without semicolon - { - @5⦊countdown - = - 100⦉@5 - } - - if - @7⦊is_true⦉@7 - @8,10⦊{ - countdown - = - 10 - ; - }⦉@8,10 - else - @9⦊{ - countdown - = - 100 - ; - }⦉@9 -}@11⦊⦉@11
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.inner_items/inner_items.main-InTrait-default_trait_func.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.inner_items/inner_items.main-InTrait-default_trait_func.-------.InstrumentCoverage.0.html deleted file mode 100644 index 387f2ba4e41..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.inner_items/inner_items.main-InTrait-default_trait_func.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - -inner_items.main-InTrait-default_trait_func - Coverage Spans - - - -
fn default_trait_func(&mut self) @0,1,2⦊{ - in_func(IN_CONST); - self.trait_func(IN_CONST); - }⦉@0,1,2
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.inner_items/inner_items.main-in_func.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.inner_items/inner_items.main-in_func.-------.InstrumentCoverage.0.html deleted file mode 100644 index cec099a0ef5..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.inner_items/inner_items.main-in_func.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - -inner_items.main-in_func - Coverage Spans - - - -
fn in_func(a: u32) { - let @0,1,2,3,4⦊b = 1; - let c = a + b; - println!("c = {}", c) - }⦉@0,1,2,3,4
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.inner_items/inner_items.main-{impl#0}-trait_func.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.inner_items/inner_items.main-{impl#0}-trait_func.-------.InstrumentCoverage.0.html deleted file mode 100644 index eaecb183ca1..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.inner_items/inner_items.main-{impl#0}-trait_func.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - -inner_items.main-{impl#0}-trait_func - Coverage Spans - - - -
fn trait_func(&mut self, incr: u32) @0,1,2⦊{ - self.in_struct_field += incr; - in_func(self.in_struct_field); - }⦉@0,1,2
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.inner_items/inner_items.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.inner_items/inner_items.main.-------.InstrumentCoverage.0.html deleted file mode 100644 index 3e54d6566b4..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.inner_items/inner_items.main.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - -inner_items.main - Coverage Spans - - - -
fn main() { - // Initialize test constants in a way that cannot be determined at compile time, to ensure - // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from - // dependent conditions. - let @0,1,2,3⦊is_true = std::env::args().len() == 1; - - let mut countdown = 0⦉@0,1,2,3; - if @0,1,2,3⦊is_true⦉@0,1,2,3 @4,6⦊{ - countdown = 10; - }⦉@4,6@5⦊⦉@5 - - mod in_mod { - const IN_MOD_CONST: u32 = 1000; - } - - fn in_func(a: u32) { - let b = 1; - let c = a + b; - println!("c = {}", c) - } - - struct InStruct { - in_struct_field: u32, - } - - const IN_CONST: u32 = 1234; - - trait InTrait { - fn trait_func(&mut self, incr: u32); - - fn default_trait_func(&mut self) { - in_func(IN_CONST); - self.trait_func(IN_CONST); - } - } - - impl InTrait for InStruct { - fn trait_func(&mut self, incr: u32) { - self.in_struct_field += incr; - in_func(self.in_struct_field); - } - } - - type InType = String; - - if @7⦊is_true⦉@7 @8,10,11⦊{ - in_func(countdown); - }⦉@8,10,11@9⦊⦉@9 - - let @12,13⦊mut val = InStruct { - in_struct_field: 101, - }; - - val.default_trait_func(); -}⦉@12,13
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.lazy_boolean/lazy_boolean.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.lazy_boolean/lazy_boolean.main.-------.InstrumentCoverage.0.html deleted file mode 100644 index dd21c23acf6..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.lazy_boolean/lazy_boolean.main.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,229 +0,0 @@ - - - - -lazy_boolean.main - Coverage Spans - - - -
fn main() { - // Initialize test constants in a way that cannot be determined at compile time, to ensure - // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from - // dependent conditions. - let @0,1,2,3⦊is_true = std::env::args().len() == 1; - - let (mut a, mut b, mut c) = (0, 0, 0)⦉@0,1,2,3; - if @0,1,2,3⦊is_true⦉@0,1,2,3 @4,6⦊{ - a = 1; - b = 10; - c = 100; - }⦉@4,6@5⦊⦉@5 - let - @11⦊somebool⦉@11 - = - @7⦊a < b⦉@7 - || - @10⦊b < c⦉@10@8⦊⦉@8@9⦊⦉@9 - ; - let - @15⦊somebool⦉@15 - = - @11⦊b < a⦉@11 - || - @14⦊b < c⦉@14@12⦊⦉@12@13⦊⦉@13 - ; - let @19⦊somebool⦉@19 = @15⦊a < b⦉@15 && @18⦊b < c⦉@18@16⦊⦉@16@17⦊⦉@17; - let @23⦊somebool⦉@23 = @19⦊b < a⦉@19 && @22⦊b < c⦉@22@20⦊⦉@20@21⦊⦉@21; - - if - @23⦊! - is_true⦉@23 - @24,26⦊{ - a = 2 - ; - }⦉@24,26@25⦊⦉@25 - - if - @27⦊is_true⦉@27 - @28,30⦊{ - b = 30 - ; - }⦉@28,30 - else - @29⦊{ - c = 400 - ; - }⦉@29 - - if @31⦊!is_true⦉@31 @32,34⦊{ - a = 2; - }⦉@32,34@33⦊⦉@33 - - if @35⦊is_true⦉@35 @36,38⦊{ - b = 30; - }⦉@36,38 else @37⦊{ - c = 400; - }⦉@37 -}@39⦊⦉@39
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.loop_break_value/loop_break_value.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.loop_break_value/loop_break_value.main.-------.InstrumentCoverage.0.html deleted file mode 100644 index eff27bf3557..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.loop_break_value/loop_break_value.main.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - -loop_break_value.main - Coverage Spans - - - -
fn main() @0,1⦊{ - let result - = - loop - { - break - 10 - ; - } - ; -}⦉@0,1
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.loops_branches/loops_branches.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.loops_branches/loops_branches.main.-------.InstrumentCoverage.0.html deleted file mode 100644 index 73b3e20946c..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.loops_branches/loops_branches.main.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - -loops_branches.main - Coverage Spans - - - -
fn main() @0,1,2,3⦊{ - let debug_test = DebugTest; - println!("{:?}", debug_test); -}⦉@0,1,2,3
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.loops_branches/loops_branches.{impl#0}-fmt.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.loops_branches/loops_branches.{impl#0}-fmt.-------.InstrumentCoverage.0.html deleted file mode 100644 index a98ed9e8ce1..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.loops_branches/loops_branches.{impl#0}-fmt.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - -loops_branches.{impl#0}-fmt - Coverage Spans - - - -
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { - if @0⦊true⦉@0 { - if @1,3⦊false⦉@1,3 { - while @6,7⦊true⦉@6,7 @8,10⦊{ - }⦉@8,10 - }@9⦊⦉@9@5⦊⦉@5 - @11,12,13,14⦊write!(f, "error")⦉@11,12,13,14@16,18,19,20⦊?⦉@16,18,19,20; - } else @2⦊{ - }⦉@2@15⦊⦉@15 - @21⦊Ok(())⦉@21 - }@22⦊⦉@22
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.nested_loops/nested_loops.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.nested_loops/nested_loops.main.-------.InstrumentCoverage.0.html deleted file mode 100644 index 0f3ea3ce6a8..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.nested_loops/nested_loops.main.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - -nested_loops.main - Coverage Spans - - - -
fn main() { - let @0,1,2,3⦊is_true = std::env::args().len() == 1; - let mut countdown = 10⦉@0,1,2,3; - - 'outer: while @4,5⦊countdown > 0⦉@4,5 { - let @6,8,9⦊mut a = 100; - let mut b = 100⦉@6,8,9; - for @14,16⦊_⦉@14,16 in @10,11,12⦊0..50⦉@10,11,12 { - if @14,16⦊a < 30⦉@14,16 { - @17,19⦊break⦉@17,19; - } - @18,20,21⦊a -= 5; - b -= 5⦉@18,20,21; - if @18,20,21⦊b < 90⦉@18,20,21 { - @22,24,25⦊a -= 10; - if is_true⦉@22,24,25 { - @26,28⦊break 'outer⦉@26,28; - } else @27,29⦊{ - a -= 2; - } - }⦉@27,29@23⦊⦉@23 - }@30⦊⦉@30 - @31,32⦊countdown -= 1⦉@31,32; - }@7⦊⦉@7 -}@33⦊⦉@33
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.overflow/overflow.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.overflow/overflow.main.-------.InstrumentCoverage.0.html deleted file mode 100644 index 4f237d6561d..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.overflow/overflow.main.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,259 +0,0 @@ - - - - -overflow.main - Coverage Spans - - - -
fn main() -> Result<(),u8> { - let @0⦊mut countdown = 10⦉@0; - while @1,2⦊countdown > 0⦉@1,2 { - if @3,5⦊countdown == 1⦉@3,5 @6,8,9,10,11,12⦊{ - let result = might_overflow(10); - println!("Result: {}", result); - }⦉@6,8,9,10,11,12 else if @7⦊countdown < 5⦉@7 @13,15,16,17,18,19⦊{ - let result = might_overflow(1); - println!("Result: {}", result); - }⦉@13,15,16,17,18,19@14⦊⦉@14@20⦊⦉@20 - @21,22⦊countdown -= 1⦉@21,22; - } - @4⦊Ok(()) -}⦉@4
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.overflow/overflow.might_overflow.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.overflow/overflow.might_overflow.-------.InstrumentCoverage.0.html deleted file mode 100644 index b1dbc40ee20..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.overflow/overflow.might_overflow.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,397 +0,0 @@ - - - - -overflow.might_overflow - Coverage Spans - - - -
fn might_overflow(to_add: u32) -> u32 { - if @0⦊to_add > 5⦉@0 @1,3,4,5⦊{ - println!("this will probably overflow"); - }⦉@1,3,4,5@2⦊⦉@2 - let @6,7,8,9,10,11,12,13,14⦊add_to = u32::MAX - 5; - println!("does {} + {} overflow?", add_to, to_add); - let result = to_add + add_to; - println!("continuing after overflow check"); - result -}⦉@6,7,8,9,10,11,12,13,14
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.panic_unwind/panic_unwind.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.panic_unwind/panic_unwind.main.-------.InstrumentCoverage.0.html deleted file mode 100644 index ebacd80c37d..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.panic_unwind/panic_unwind.main.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - -panic_unwind.main - Coverage Spans - - - -
fn main() -> Result<(),u8> { - let @0⦊mut countdown = 10⦉@0; - while @1,2⦊countdown > 0⦉@1,2 { - if @3,5⦊countdown == 1⦉@3,5 @6,8,9⦊{ - might_panic(true); - }⦉@6,8,9 else if @7⦊countdown < 5⦉@7 @10,12,13⦊{ - might_panic(false); - }⦉@10,12,13@11⦊⦉@11@14⦊⦉@14 - @15,16⦊countdown -= 1⦉@15,16; - } - @4⦊Ok(()) -}⦉@4
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.panic_unwind/panic_unwind.might_panic.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.panic_unwind/panic_unwind.might_panic.-------.InstrumentCoverage.0.html deleted file mode 100644 index d6002e70af2..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.panic_unwind/panic_unwind.might_panic.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - -panic_unwind.might_panic - Coverage Spans - - - -
fn might_panic(should_panic: bool) { - if @0⦊should_panic⦉@0 { - @1,3,4,5⦊println!("panicking..."); - panic!("panics");⦉@1,3,4,5 - } else @2,6,7⦊{ - println!("Don't Panic"); - } -}⦉@2,6,7
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.main.-------.InstrumentCoverage.0.html deleted file mode 100644 index 0c6d81a18b1..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.main.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,295 +0,0 @@ - - - - -partial_eq.main - Coverage Spans - - - -
fn main() @0,1,2,3,4,5,6,7,8⦊{ - let version_3_2_1 = Version::new(3, 2, 1); - let version_3_3_0 = Version::new(3, 3, 0); - - println!("{:?} < {:?} = {}", version_3_2_1, version_3_3_0, version_3_2_1 < version_3_3_0); -}⦉@0,1,2,3,4,5,6,7,8
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#0}-new.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#0}-new.-------.InstrumentCoverage.0.html deleted file mode 100644 index a888cb14d1d..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#0}-new.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - -partial_eq.{impl#0}-new - Coverage Spans - - - -
pub fn new(major: usize, minor: usize, patch: usize) -> Self { - @0⦊Self { - major, - minor, - patch, - } - }⦉@0
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#1}-cmp.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#1}-cmp.-------.InstrumentCoverage.0.html deleted file mode 100644 index fa81a7f8afc..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#1}-cmp.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - -partial_eq.{impl#1}-cmp - Coverage Spans - - - -
@14⦊@11,12⦊@13⦊Ord⦉@13⦉@11,12⦉@14@15⦊⦉@15
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-ge-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-ge-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html deleted file mode 100644 index 52e6b526276..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-ge-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - -partial_eq.{impl#2}-ge-{closure#0}-{closure#0} - Coverage Spans - - - -
minor: usize, - @0,1,2⦊patch: usize⦉@0,1,2
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-ge-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-ge-{closure#0}.-------.InstrumentCoverage.0.html deleted file mode 100644 index 9f0c29c50bf..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-ge-{closure#0}.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - -partial_eq.{impl#2}-ge-{closure#0} - Coverage Spans - - - -
major: usize, - @0,1,2,3⦊⦉@0,1,2,3minor: usize
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-ge.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-ge.-------.InstrumentCoverage.0.html deleted file mode 100644 index b740a63aed9..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-ge.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - -partial_eq.{impl#2}-ge - Coverage Spans - - - -
@0,1,2,3,4⦊⦉@0,1,2,3,4PartialOrd@0,1,2,3,4⦊⦉@0,1,2,3,4
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-gt-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-gt-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html deleted file mode 100644 index 0ad35d701aa..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-gt-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - -partial_eq.{impl#2}-gt-{closure#0}-{closure#0} - Coverage Spans - - - -
minor: usize, - @0,1,2⦊patch: usize⦉@0,1,2
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-gt-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-gt-{closure#0}.-------.InstrumentCoverage.0.html deleted file mode 100644 index ff7e783dd68..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-gt-{closure#0}.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - -partial_eq.{impl#2}-gt-{closure#0} - Coverage Spans - - - -
major: usize, - @0,1,2,3⦊⦉@0,1,2,3minor: usize
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-gt.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-gt.-------.InstrumentCoverage.0.html deleted file mode 100644 index 95b63edba87..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-gt.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - -partial_eq.{impl#2}-gt - Coverage Spans - - - -
@0,1,2,3,4⦊⦉@0,1,2,3,4PartialOrd@0,1,2,3,4⦊⦉@0,1,2,3,4
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-le-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-le-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html deleted file mode 100644 index d43d8526a88..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-le-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - -partial_eq.{impl#2}-le-{closure#0}-{closure#0} - Coverage Spans - - - -
minor: usize, - @0,1,2⦊patch: usize⦉@0,1,2
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-le-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-le-{closure#0}.-------.InstrumentCoverage.0.html deleted file mode 100644 index 6eb894a166a..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-le-{closure#0}.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - -partial_eq.{impl#2}-le-{closure#0} - Coverage Spans - - - -
major: usize, - @0,1,2,3⦊⦉@0,1,2,3minor: usize
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-le.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-le.-------.InstrumentCoverage.0.html deleted file mode 100644 index 906d074b71f..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-le.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - -partial_eq.{impl#2}-le - Coverage Spans - - - -
@0,1,2,3,4⦊⦉@0,1,2,3,4PartialOrd@0,1,2,3,4⦊⦉@0,1,2,3,4
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-lt-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-lt-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html deleted file mode 100644 index a941c08da5d..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-lt-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - -partial_eq.{impl#2}-lt-{closure#0}-{closure#0} - Coverage Spans - - - -
minor: usize, - @0,1,2⦊patch: usize⦉@0,1,2
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-lt-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-lt-{closure#0}.-------.InstrumentCoverage.0.html deleted file mode 100644 index e54849345b7..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-lt-{closure#0}.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - -partial_eq.{impl#2}-lt-{closure#0} - Coverage Spans - - - -
major: usize, - @0,1,2,3⦊⦉@0,1,2,3minor: usize
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-lt.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-lt.-------.InstrumentCoverage.0.html deleted file mode 100644 index 0da90113bdd..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-lt.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - -partial_eq.{impl#2}-lt - Coverage Spans - - - -
@0,1,2,3,4⦊⦉@0,1,2,3,4PartialOrd@0,1,2,3,4⦊⦉@0,1,2,3,4
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-partial_cmp.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-partial_cmp.-------.InstrumentCoverage.0.html deleted file mode 100644 index c5a806f7c17..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#2}-partial_cmp.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - -partial_eq.{impl#2}-partial_cmp - Coverage Spans - - - -
@17⦊@14,15⦊@16⦊PartialOrd⦉@16⦉@14,15⦉@17@18⦊⦉@18
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#6}-eq.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#6}-eq.-------.InstrumentCoverage.0.html deleted file mode 100644 index 92f37e4b89a..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#6}-eq.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - -partial_eq.{impl#6}-eq - Coverage Spans - - - -
@2⦊@1⦊PartialEq⦉@1⦉@2@4⦊⦉@4
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#6}-ne.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#6}-ne.-------.InstrumentCoverage.0.html deleted file mode 100644 index df561a79224..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#6}-ne.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - -partial_eq.{impl#6}-ne - Coverage Spans - - - -
@2⦊@5⦊@6⦊@1⦊PartialEq⦉@1⦉@6⦉@5⦉@2@4⦊⦉@4
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#7}-fmt.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#7}-fmt.-------.InstrumentCoverage.0.html deleted file mode 100644 index 195ef4da7b4..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#7}-fmt.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - -partial_eq.{impl#7}-fmt - Coverage Spans - - - -
@0,1,2,3,4,5⦊Debug⦉@0,1,2,3,4,5
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.simple_loop/simple_loop.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.simple_loop/simple_loop.main.-------.InstrumentCoverage.0.html deleted file mode 100644 index 29d21cf7ba4..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.simple_loop/simple_loop.main.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - -simple_loop.main - Coverage Spans - - - -
fn main() { - // Initialize test constants in a way that cannot be determined at compile time, to ensure - // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from - // dependent conditions. - let @0,1,2,3⦊is_true = std::env::args().len() == 1; - - let mut countdown = 0⦉@0,1,2,3; - - if - @0,1,2,3⦊is_true⦉@0,1,2,3 - @4,6⦊{ - countdown - = - 10 - ; - }⦉@4,6@5⦊⦉@5 - - loop - { - if - @8,9⦊countdown - == - 0⦉@8,9 - { - @10,12⦊break⦉@10,12 - ; - } - @11,13⦊countdown - -= - 1⦉@11,13 - ; - }@7⦊⦉@7 -}@10,12⦊⦉@10,12
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.simple_match/simple_match.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.simple_match/simple_match.main.-------.InstrumentCoverage.0.html deleted file mode 100644 index f1513d458eb..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.simple_match/simple_match.main.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - -simple_match.main - Coverage Spans - - - -
fn main() { - // Initialize test constants in a way that cannot be determined at compile time, to ensure - // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from - // dependent conditions. - let @0,1,2,3⦊is_true = std::env::args().len() == 1; - - let mut countdown = 1⦉@0,1,2,3; - if @0,1,2,3⦊is_true⦉@0,1,2,3 @4,6⦊{ - countdown = 0; - }⦉@4,6@5⦊⦉@5 - - for - @13,15,17⦊_⦉@13,15,17 - in - @9,10,11⦊0..2⦉@9,10,11 - { - let z - ; - match - @13,15,17⦊countdown⦉@13,15,17 - { - @18⦊x⦉@18 - if - @13,15,17⦊x - < - 1⦉@13,15,17@19⦊⦉@19 - => - @18⦊{ - z = countdown - ; - let y = countdown - ; - countdown = 10 - ; - }⦉@18 - _ - => - @16⦊{}⦉@16 - } - }@7,8⦊⦉@7,8@20⦊⦉@20 -}@12⦊⦉@12
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.tight_inf_loop/tight_inf_loop.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.tight_inf_loop/tight_inf_loop.main.-------.InstrumentCoverage.0.html deleted file mode 100644 index 5cf76ecf5c2..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.tight_inf_loop/tight_inf_loop.main.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - -tight_inf_loop.main - Coverage Spans - - - -
fn main() { - if @0⦊false⦉@0 { - @4,5⦊loop {}⦉@4,5@1,3⦊⦉@1,3 - } -}@2⦊⦉@2
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.try_error_result/try_error_result.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.try_error_result/try_error_result.main.-------.InstrumentCoverage.0.html deleted file mode 100644 index b9391e26c86..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.try_error_result/try_error_result.main.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - -try_error_result.main - Coverage Spans - - - -
fn main() -> Result<(),()> { - let @0,1⦊mut - countdown = 10⦉@0,1 - ; - for - @6,8,9⦊_⦉@6,8,9 - in - @2,3,4⦊0..10⦉@2,3,4 - { - @6,8,9⦊countdown - -= 1 - ; - if - countdown < 5⦉@6,8,9 - { - @10,12,13,14⦊call(/*return_error=*/ true)⦉@10,12,13,14@16,18,19,20⦊?⦉@16,18,19,20; - @15,21,22⦊call(/*return_error=*/ false)⦉@15,21,22@24,26,27,28⦊?⦉@24,26,27,28; - } - else - { - @11,29,30⦊call(/*return_error=*/ false)⦉@11,29,30@32,34,35,36⦊?⦉@32,34,35,36; - }@23⦊⦉@23@31⦊⦉@31 - }@37⦊⦉@37 - @5⦊Ok(())⦉@5 -}@38⦊⦉@38@39⦊⦉@39
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.while/while.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.while/while.main.-------.InstrumentCoverage.0.html deleted file mode 100644 index 05c010da7bc..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.while/while.main.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - -while.main - Coverage Spans - - - -
fn main() { - let @0⦊num = 9⦉@0; - while @1,2⦊num >= 10⦉@1,2 @3,5⦊{ - }⦉@3,5 -}@4⦊⦉@4
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.while_early_ret/while_early_ret.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.while_early_ret/while_early_ret.main.-------.InstrumentCoverage.0.html deleted file mode 100644 index 87ce501ca8c..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.while_early_ret/while_early_ret.main.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - -while_early_ret.main - Coverage Spans - - - -
fn main() -> Result<(),u8> { - let @0⦊mut countdown = 10⦉@0; - while - @1,2⦊countdown - > - 0⦉@1,2 - { - if - @3,5⦊countdown - < - 5⦉@3,5 - { - return - if - @6,8⦊countdown - > - 8⦉@6,8 - { - @9,11⦊Ok(())⦉@9,11 - } - else - { - @10⦊Err(1)⦉@10 - } - ; - } - @7,12⦊countdown - -= - 1⦉@7,12 - ; - } - @4⦊Ok(())⦉@4 -}@13⦊⦉@13@14⦊⦉@14
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.yield/yield.main-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.yield/yield.main-{closure#0}.-------.InstrumentCoverage.0.html deleted file mode 100644 index b8458f9d8d6..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.yield/yield.main-{closure#0}.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - -yield.main-{closure#0} - Coverage Spans - - - -
|| { - @0⦊yield 1⦉@0; - return @1⦊"foo" - }⦉@1
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.yield/yield.main-{closure#1}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.yield/yield.main-{closure#1}.-------.InstrumentCoverage.0.html deleted file mode 100644 index 2387f40847a..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.yield/yield.main-{closure#1}.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - -yield.main-{closure#1} - Coverage Spans - - - -
|| { - @0⦊yield 1⦉@0; - @1⦊yield 2⦉@1; - @2⦊yield 3⦉@2; - return @3⦊"foo" - }⦉@3
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.yield/yield.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.yield/yield.main.-------.InstrumentCoverage.0.html deleted file mode 100644 index 7c974d7f97b..00000000000 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.yield/yield.main.-------.InstrumentCoverage.0.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - -yield.main - Coverage Spans - - - -
fn main() { - let @0,1,2⦊mut generator⦉@0,1,2 = || { - yield 1; - return "foo" - }; - - match @0,1,2⦊Pin::new(&mut generator).resume(()) { - GeneratorState::Yielded(1)⦉@0,1,2 => @4,6,7,8⦊{}⦉@4,6,7,8 - _ => @5⦊panic!("unexpected value from resume")⦉@5, - } - match @4,6,7,8⦊Pin::new(&mut generator).resume(())⦉@4,6,7,8 { - GeneratorState::Complete(@10,11⦊"foo"⦉@10,11) => @12,13,14,15⦊{}⦉@12,13,14,15 - _ => @9⦊panic!("unexpected value from resume")⦉@9, - } - - let @12,13,14,15⦊mut generator⦉@12,13,14,15 = || { - yield 1; - yield 2; - yield 3; - return "foo" - }; - - match @12,13,14,15⦊Pin::new(&mut generator).resume(()) { - GeneratorState::Yielded(1)⦉@12,13,14,15 => @17,19,20,21⦊{}⦉@17,19,20,21 - _ => @18⦊panic!("unexpected value from resume")⦉@18, - } - match @17,19,20,21⦊Pin::new(&mut generator).resume(()) { - GeneratorState::Yielded(2)⦉@17,19,20,21 => @23,25⦊{}⦉@23,25 - _ => @24⦊panic!("unexpected value from resume")⦉@24, - } -}@23,25⦊⦉@23,25
- - diff --git a/src/test/run-make-fulldeps/coverage-spanview/Makefile b/src/test/run-make-fulldeps/coverage-spanview/Makefile index 979c6a3da41..f414fe89eb9 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/Makefile +++ b/src/test/run-make-fulldeps/coverage-spanview/Makefile @@ -1,9 +1,5 @@ # needs-profiler-support -# ISSUE(76038): When targeting MSVC, Rust binaries built with both `-Z instrument-coverage` and -# `-C link-dead-code` typically crash (with a seg-fault) or at best generate an empty `*.profraw`. -# See ../coverage/coverage_tools.mk for more information. - -include ../coverage/coverage_tools.mk BASEDIR=../coverage-spanview @@ -47,7 +43,6 @@ endif echo "--edition=2018" \ ) \ -Zinstrument-coverage \ - -Clink-dead-code=$(LINK_DEAD_CODE) \ -Zdump-mir=InstrumentCoverage \ -Zdump-mir-spanview \ -Zdump-mir-dir="$(TMPDIR)"/mir_dump.$@ diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.abort/abort.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.abort/abort.main.-------.InstrumentCoverage.0.html index 63f7d2dd2d9..9834124694e 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.abort/abort.main.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.abort/abort.main.-------.InstrumentCoverage.0.html @@ -69,31 +69,41 @@ For revisions in Pull Requests (PR): -
fn main() -> Result<(),u8> { - let @0⦊mut countdown = 10⦉@0; +
@0⦊fn main() -> Result<(), u8> { + let mut countdown = 10⦉@0; while @1,2⦊countdown > 0⦉@1,2 { if @3,5⦊countdown < 5⦉@3,5 @6,8,9⦊{ - might_abort(false); - }⦉@6,8,9@7⦊⦉@7 - @10,11⦊countdown -= 1⦉@10,11; +17:12-17:25: @5[6]: FakeRead(ForMatchedPlace, _7)">@3,5⦊countdown < 5⦉@3,5 @6,8,9⦊{ + might_abort(false); + }⦉@6,8,9@7⦊⦉@7 + // See discussion (below the `Notes` section) on coverage results for the closing brace. + if @10⦊countdown < 5⦉@10 @11,13,14⦊{ might_abort(false); }⦉@11,13,14@12⦊⦉@12 // Counts for different regions on one line. + // For the following example, the closing brace is the last character on the line. + // This shows the character after the closing brace is highlighted, even if that next + // character is a newline. + if @15⦊countdown < 5⦉@15 @16,18,19⦊{ might_abort(false); }⦉@16,18,19@17⦊⦉@17 + @20,21⦊countdown -= 1⦉@20,21; } - @4⦊Ok(()) -}⦉@4
+ @4⦊Ok(()) +}⦉@4
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.abort/abort.might_abort.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.abort/abort.might_abort.-------.InstrumentCoverage.0.html index 444ca72ce4c..ab7108ae570 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.abort/abort.might_abort.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.abort/abort.might_abort.-------.InstrumentCoverage.0.html @@ -69,7 +69,7 @@ For revisions in Pull Requests (PR): -
fn might_abort(should_abort: bool) { +
@0⦊fn might_abort(should_abort: bool) ⦉@0{ if @0⦊should_abort⦉@0 { fn main() -> Result<(),u8> { - let @0⦊mut countdown = 10⦉@0; +
@0⦊fn main() -> Result<(),u8> { + let mut countdown = 10⦉@0; while @1,2⦊countdown > 0⦉@1,2 { @@ -89,14 +90,14 @@ For revisions in Pull Requests (PR): might_fail_assert(2); }⦉@10,12,13@11⦊⦉@11@14⦊⦉@14 - }⦉@10,12,13@11⦊⦉@11 + @15,16⦊countdown -= 1⦉@15,16; } - @4⦊Ok(()) -}⦉@4
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.assert/assert.might_fail_assert.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.assert/assert.might_fail_assert.-------.InstrumentCoverage.0.html index c03fc8e416e..13cfebfe6e5 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.assert/assert.might_fail_assert.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.assert/assert.might_fail_assert.-------.InstrumentCoverage.0.html @@ -69,9 +69,9 @@ For revisions in Pull Requests (PR): -
fn might_fail_assert(one_plus_one: u32) { - @0,1,2,3,4⦊fn might_fail_assert(one_plus_one: u32) ⦉@0,1,2,3,4{ + @0,1,2,3,4⦊println!("does 1 + 1 = {}?", one_plus_one);⦉@0,1,2,3,4 - assert_eq!(@0,1,2,3,4⦊1 + 1⦉@0,1,2,3,4, one_plus_one, @5,7,8,9,10,11,12⦊"the argument was wrong"⦉@5,7,8,9,10,11,12); + assert_eq!(@0,1,2,3,4⦊1 + 1⦉@0,1,2,3,4, one_plus_one, @5,7,8,9,10,11,12⦊"the argument was wrong"⦉@5,7,8,9,10,11,12); }@6⦊⦉@6
diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.try_error_result/try_error_result.call.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.c-{closure#0}.-------.InstrumentCoverage.0.html similarity index 65% rename from src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.try_error_result/try_error_result.call.-------.InstrumentCoverage.0.html rename to src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.c-{closure#0}.-------.InstrumentCoverage.0.html index eeee81daeb2..82a22ccb4e6 100644 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.try_error_result/try_error_result.call.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.c-{closure#0}.-------.InstrumentCoverage.0.html @@ -2,7 +2,7 @@ -try_error_result.call - Coverage Spans +async.c-{closure#0} - Coverage Spans -
fn call(return_error: bool) -> Result<(),()> { - if @0⦊return_error⦉@0 { - @1,3⦊Err(())⦉@1,3 +
@0⦊{ + if x == 8⦉@0 { + @1,3⦊1⦉@1,3 } else { - @2⦊Ok(())⦉@2 + @2⦊0⦉@2 } -}@4⦊⦉@4
+}@4⦊⦉@4
diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.i.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.c.-------.InstrumentCoverage.0.html similarity index 77% rename from src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.i.-------.InstrumentCoverage.0.html rename to src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.c.-------.InstrumentCoverage.0.html index 0b193f4973e..3eee0dd4100 100644 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.i.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.c.-------.InstrumentCoverage.0.html @@ -2,7 +2,7 @@ -async.i - Coverage Spans +async.c - Coverage Spans -
async fn i(x: u8) { - match x { - y if f().await == y + 1 => (), - _ => (), +
@0,1⦊async fn c(x: u8) -> u8 ⦉@0,1{ + if x == 8 { + 1 + } else { + 0 } -}@0,1⦊⦉@0,1
+}
diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.f-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.d-{closure#0}.-------.InstrumentCoverage.0.html similarity index 79% rename from src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.f-{closure#0}.-------.InstrumentCoverage.0.html rename to src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.d-{closure#0}.-------.InstrumentCoverage.0.html index 7fe94dca7a4..7cf34f07795 100644 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.f-{closure#0}.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.d-{closure#0}.-------.InstrumentCoverage.0.html @@ -2,7 +2,7 @@ -async.f-{closure#0} - Coverage Spans +async.d-{closure#0} - Coverage Spans -
{ @0⦊1 }⦉@0
+
@0⦊⦉@0{ 1 }
diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.f.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.d.-------.InstrumentCoverage.0.html similarity index 81% rename from src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.f.-------.InstrumentCoverage.0.html rename to src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.d.-------.InstrumentCoverage.0.html index f5eddba9d4b..5c7f6e00224 100644 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.f.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.d.-------.InstrumentCoverage.0.html @@ -2,7 +2,7 @@ -async.f - Coverage Spans +async.d - Coverage Spans -
async fn f() -> u8 { 1 }@0,1⦊⦉@0,1
+
@0,1⦊async fn d() -> u8 ⦉@0,1{ 1 }
diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#4}-assert_receiver_is_total_eq.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.e-{closure#0}.-------.InstrumentCoverage.0.html similarity index 78% rename from src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#4}-assert_receiver_is_total_eq.-------.InstrumentCoverage.0.html rename to src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.e-{closure#0}.-------.InstrumentCoverage.0.html index b4beef867eb..1f95a7d35af 100644 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#4}-assert_receiver_is_total_eq.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.e-{closure#0}.-------.InstrumentCoverage.0.html @@ -2,7 +2,7 @@ -partial_eq.{impl#4}-assert_receiver_is_total_eq - Coverage Spans +async.e-{closure#0} - Coverage Spans -
@0⦊Eq⦉@0
+
@0⦊⦉@0{ 1 }
diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.foo.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.e.-------.InstrumentCoverage.0.html similarity index 80% rename from src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.foo.-------.InstrumentCoverage.0.html rename to src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.e.-------.InstrumentCoverage.0.html index dea4560ea56..ee3b7b1d7ff 100644 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.foo.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.e.-------.InstrumentCoverage.0.html @@ -2,7 +2,7 @@ -async.foo - Coverage Spans +async.e - Coverage Spans -
async fn foo() -> [bool; 10] { [false; 10] }@0,1⦊⦉@0,1
+
@0,1⦊async fn e() -> u8 ⦉@0,1{ 1 }
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#0}.-------.InstrumentCoverage.0.html index 4689c34ca0f..8f61257ca1b 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#0}.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#0}.-------.InstrumentCoverage.0.html @@ -69,21 +69,16 @@ For revisions in Pull Requests (PR): -
{ - @0,1,2,3⦊$crate::rt::begin_panic_fmt(&$crate::format_args!($fmt, $($arg)+))⦉@0,1,2,3 - }
+
@0,1,2,3⦊⦉@0,1,2,3$crate::panicking::panic_fmt($crate::format_args!($fmt, $($arg)+))
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#1}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#1}.-------.InstrumentCoverage.0.html index ccfb1dd0a37..923c669e72d 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#1}.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#1}.-------.InstrumentCoverage.0.html @@ -69,21 +69,16 @@ For revisions in Pull Requests (PR): -
{ - @0,1,2,3⦊$crate::rt::begin_panic_fmt(&$crate::format_args!($fmt, $($arg)+))⦉@0,1,2,3 - }
+
@0,1,2,3⦊⦉@0,1,2,3$crate::panicking::panic_fmt($crate::format_args!($fmt, $($arg)+))
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#2}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#2}.-------.InstrumentCoverage.0.html index 2d402b83081..59f62959998 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#2}.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#2}.-------.InstrumentCoverage.0.html @@ -69,21 +69,16 @@ For revisions in Pull Requests (PR): -
{ - @0,1,2,3⦊$crate::rt::begin_panic_fmt(&$crate::format_args!($fmt, $($arg)+))⦉@0,1,2,3 - }
+
@0,1,2,3⦊⦉@0,1,2,3$crate::panicking::panic_fmt($crate::format_args!($fmt, $($arg)+))
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#3}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#3}.-------.InstrumentCoverage.0.html index adba2d9965d..996c537225d 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#3}.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#3}.-------.InstrumentCoverage.0.html @@ -69,7 +69,7 @@ For revisions in Pull Requests (PR): -
|_| @0⦊()⦉@0
+
|_| @0⦊()⦉@0
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.executor-block_on.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.executor-block_on.-------.InstrumentCoverage.0.html index 583a67e6c7f..0c597d40de0 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.executor-block_on.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.executor-block_on.-------.InstrumentCoverage.0.html @@ -69,158 +69,171 @@ For revisions in Pull Requests (PR): -
pub fn block_on<F: Future>(mut future: F) -> F::Output { - let @0,1,2,3,4,5⦊mut future = unsafe { Pin::new_unchecked(&mut future) }; - - static VTABLE: RawWakerVTable = RawWakerVTable::new( - |_| unimplemented!("clone"), - |_| unimplemented!("wake"), - |_| unimplemented!("wake_by_ref"), - |_| (), - ); - let waker = unsafe { Waker::from_raw(RawWaker::new(core::ptr::null(), &VTABLE)) }; - let mut context = Context::from_waker(&waker)⦉@0,1,2,3,4,5; +
@0,1,2,3,4,5⦊pub fn block_on<F: Future>(mut future: F) -> F::Output { + let mut future = unsafe { Pin::new_unchecked(&mut future) }; + + static VTABLE: RawWakerVTable = RawWakerVTable::new( + |_| unimplemented!("clone"), + |_| unimplemented!("wake"), + |_| unimplemented!("wake_by_ref"), + |_| (), + ); + let waker = unsafe { Waker::from_raw(RawWaker::new(core::ptr::null(), &VTABLE)) }; + let mut context = Context::from_waker(&waker)⦉@0,1,2,3,4,5; loop { - if let Poll::Ready(@10,12,14,15,16,17⦊val⦉@10,12,14,15,16,17) = @6,7,8,9⦊future.as_mut().poll(&mut context)⦉@6,7,8,9 { - break @10,12,14,15,16,17⦊val⦉@10,12,14,15,16,17; - } - }@11,13⦊⦉@11,13 - }@10,12,14,15,16,17⦊⦉@10,12,14,15,16,17
+ if let Poll::Ready(@10,12,14,15,16,17⦊val⦉@10,12,14,15,16,17) = @6,7,8,9⦊future.as_mut().poll(&mut context)⦉@6,7,8,9 { + break @10,12,14,15,16,17⦊val⦉@10,12,14,15,16,17; + }@11,13⦊⦉@11,13 + } + }@10,12,14,15,16,17⦊⦉@10,12,14,15,16,17
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.f-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.f-{closure#0}.-------.InstrumentCoverage.0.html index 7fe94dca7a4..74b62673ac9 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.f-{closure#0}.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.f-{closure#0}.-------.InstrumentCoverage.0.html @@ -69,7 +69,7 @@ For revisions in Pull Requests (PR): -
{ @0⦊1 }⦉@0
+
@0⦊⦉@0{ 1 }
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.f.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.f.-------.InstrumentCoverage.0.html index f5eddba9d4b..a31bca54df2 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.f.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.f.-------.InstrumentCoverage.0.html @@ -69,6 +69,6 @@ For revisions in Pull Requests (PR): -
async fn f() -> u8 { 1 }@0,1⦊⦉@0,1
+
@0,1⦊async fn f() -> u8 ⦉@0,1{ 1 }
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.foo-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.foo-{closure#0}.-------.InstrumentCoverage.0.html index d3b9609a7f3..b8c53cccabd 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.foo-{closure#0}.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.foo-{closure#0}.-------.InstrumentCoverage.0.html @@ -69,7 +69,7 @@ For revisions in Pull Requests (PR): -
{ @0⦊[false; 10] }⦉@0
+
@0⦊⦉@0{ [false; 10] }
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.foo.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.foo.-------.InstrumentCoverage.0.html index dea4560ea56..cf72a9d532c 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.foo.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.foo.-------.InstrumentCoverage.0.html @@ -69,6 +69,6 @@ For revisions in Pull Requests (PR): -
async fn foo() -> [bool; 10] { [false; 10] }@0,1⦊⦉@0,1
+
@0,1⦊async fn foo() -> [bool; 10] ⦉@0,1{ [false; 10] }
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.g-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.g-{closure#0}.-------.InstrumentCoverage.0.html index 9967a387a05..b10012621b7 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.g-{closure#0}.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.g-{closure#0}.-------.InstrumentCoverage.0.html @@ -69,12 +69,14 @@ For revisions in Pull Requests (PR): -
@0,2,3⦊{ - match x⦉@0,2,3 { - @16⦊y⦉@16 if @0,2,3⦊f()⦉@0,2,3.await == @9,12,14,15⦊y⦉@9,12,14,15@17⦊⦉@17 => @16⦊()⦉@16, - _ => @1⦊()⦉@1, +
@0,3,4⦊{ + match x⦉@0,3,4 { + @17⦊y⦉@17 if @0,3,4⦊e()⦉@0,3,4.await == @10,13,15,16⦊y⦉@10,13,15,16 => @17⦊()⦉@17, + @33⦊y⦉@33 if @1,19,20⦊f()⦉@1,19,20.await == @26,29,31,32⦊y⦉@26,29,31,32 => @33⦊()⦉@33, + _ => @2⦊()⦉@2, } -}@18,19⦊⦉@18,19
+}@35,36⦊⦉@35,36
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.g.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.g.-------.InstrumentCoverage.0.html index 5a43e8162cb..973995477b9 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.g.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.g.-------.InstrumentCoverage.0.html @@ -69,11 +69,12 @@ For revisions in Pull Requests (PR): -
pub async fn g(x: u8) { +
@0,1⦊pub async fn g(x: u8) ⦉@0,1{ match x { + y if e().await == y => (), y if f().await == y => (), _ => (), } -}@0,1⦊⦉@0,1
+}
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.h-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.h-{closure#0}.-------.InstrumentCoverage.0.html index 986a4b198cb..6b4b43f8365 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.h-{closure#0}.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.h-{closure#0}.-------.InstrumentCoverage.0.html @@ -69,12 +69,14 @@ For revisions in Pull Requests (PR): -
@0,2,3⦊{ - match x⦉@0,2,3 { - @17⦊y⦉@17 if @0,2,3⦊foo()⦉@0,2,3.await[@9,12,14,15,16⦊y⦉@9,12,14,15,16]@18⦊⦉@18 => @17⦊()⦉@17, - _ => @1⦊()⦉@1, +
@0,2,3⦊{ // The function signature is counted when called, but the body is not + // executed (not awaited) so the open brace has a `0` count (at least when + // displayed with `llvm-cov show` in color-mode). + match x⦉@0,2,3 { + @17⦊y⦉@17 if @0,2,3⦊foo()⦉@0,2,3.await[@9,12,14,15,16⦊y⦉@9,12,14,15,16] => @17⦊()⦉@17, + _ => @1⦊()⦉@1, } -}@19,20⦊⦉@19,20
+}@19,20⦊⦉@19,20
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.h.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.h.-------.InstrumentCoverage.0.html index aead25eed64..f2ea01281fe 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.h.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.h.-------.InstrumentCoverage.0.html @@ -69,11 +69,13 @@ For revisions in Pull Requests (PR): -
async fn h(x: usize) { +
@0,1⦊async fn h(x: usize) ⦉@0,1{ // The function signature is counted when called, but the body is not + // executed (not awaited) so the open brace has a `0` count (at least when + // displayed with `llvm-cov show` in color-mode). match x { y if foo().await[y] => (), _ => (), } -}@0,1⦊⦉@0,1
+}
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.i-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.i-{closure#0}.-------.InstrumentCoverage.0.html index ab9bbf85dd7..49297870fa0 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.i-{closure#0}.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.i-{closure#0}.-------.InstrumentCoverage.0.html @@ -69,14 +69,23 @@ For revisions in Pull Requests (PR): -
@0,2,3⦊{ - match x⦉@0,2,3 { - @17⦊y⦉@17 if @0,2,3⦊f()⦉@0,2,3.await == @9,12,14,15,16⦊y + 1⦉@9,12,14,15,16@18⦊⦉@18 => @17⦊()⦉@17, - _ => @1⦊()⦉@1, +
@0,3,4⦊{ // line coverage is 1, but there are 2 regions: + // (a) the function signature, counted when the function is called; and + // (b) the open brace for the function body, counted once when the body is + // executed asynchronously. + match x⦉@0,3,4 { + @18,20⦊y⦉@18,20 if @0,3,4⦊c(x)⦉@0,3,4.await == @10,13,15,16,17⦊y + 1⦉@10,13,15,16,17 => { @18,20⦊d()⦉@18,20.await; } + @48⦊y⦉@48 if @1,33,34⦊f()⦉@1,33,34.await == @40,43,45,46,47⦊y + 1⦉@40,43,45,46,47 => @48⦊()⦉@48, + _ => @2⦊()⦉@2, } -}@19,20⦊⦉@19,20
+}@50,51⦊⦉@50,51
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.i.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.i.-------.InstrumentCoverage.0.html index 0b193f4973e..e5dc6ecd4eb 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.i.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.i.-------.InstrumentCoverage.0.html @@ -69,11 +69,15 @@ For revisions in Pull Requests (PR): -
async fn i(x: u8) { +
@0,1⦊async fn i(x: u8) ⦉@0,1{ // line coverage is 1, but there are 2 regions: + // (a) the function signature, counted when the function is called; and + // (b) the open brace for the function body, counted once when the body is + // executed asynchronously. match x { + y if c(x).await == y + 1 => { d().await; } y if f().await == y + 1 => (), _ => (), } -}@0,1⦊⦉@0,1
+}
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.j-c.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.j-c.-------.InstrumentCoverage.0.html new file mode 100644 index 00000000000..a8e2d7e2f39 --- /dev/null +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.j-c.-------.InstrumentCoverage.0.html @@ -0,0 +1,92 @@ + + + + +async.j-c - Coverage Spans + + + +
@0⦊fn c(x: u8) -> u8 { + if x == 8⦉@0 { + @1,3⦊1⦉@1,3 // This line appears covered, but the 1-character expression span covering the `1` + // is not executed. (`llvm-cov show` displays a `^0` below the `1` ). This is because + // `fn j()` executes the open brace for the funciton body, followed by the function's + // first executable statement, `match x`. Inner function declarations are not + // "visible" to the MIR for `j()`, so the code region counts all lines between the + // open brace and the first statement as executed, which is, in a sense, true. + // `llvm-cov show` overcomes this kind of situation by showing the actual counts + // of the enclosed coverages, (that is, the `1` expression was not executed, and + // accurately displays a `0`). + } else { + @2⦊0⦉@2 + } + }@4⦊⦉@4
+ + diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.j-d.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.j-d.-------.InstrumentCoverage.0.html new file mode 100644 index 00000000000..4eed8ee60dd --- /dev/null +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.j-d.-------.InstrumentCoverage.0.html @@ -0,0 +1,75 @@ + + + + +async.j-d - Coverage Spans + + + +
@0⦊fn d() -> u8 { 1 }⦉@0
+ + diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.j-f.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.j-f.-------.InstrumentCoverage.0.html new file mode 100644 index 00000000000..6e80c8c786e --- /dev/null +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.j-f.-------.InstrumentCoverage.0.html @@ -0,0 +1,75 @@ + + + + +async.j-f - Coverage Spans + + + +
@0⦊fn f() -> u8 { 1 }⦉@0
+ + diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.j.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.j.-------.InstrumentCoverage.0.html new file mode 100644 index 00000000000..7cc751074a0 --- /dev/null +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.j.-------.InstrumentCoverage.0.html @@ -0,0 +1,108 @@ + + + + +async.j - Coverage Spans + + + +
@0,3,4,5⦊fn j(x: u8) { + // non-async versions of `c()`, `d()`, and `f()` to make it similar to async `i()`. + fn c(x: u8) -> u8 { + if x == 8 { + 1 // This line appears covered, but the 1-character expression span covering the `1` + // is not executed. (`llvm-cov show` displays a `^0` below the `1` ). This is because + // `fn j()` executes the open brace for the funciton body, followed by the function's + // first executable statement, `match x`. Inner function declarations are not + // "visible" to the MIR for `j()`, so the code region counts all lines between the + // open brace and the first statement as executed, which is, in a sense, true. + // `llvm-cov show` overcomes this kind of situation by showing the actual counts + // of the enclosed coverages, (that is, the `1` expression was not executed, and + // accurately displays a `0`). + } else { + 0 + } + } + fn d() -> u8 { 1 } + fn f() -> u8 { 1 } + match x⦉@0,3,4,5 { + @6,8⦊y⦉@6,8 if @0,3,4,5⦊c(x) == y + 1⦉@0,3,4,5 => @6,8⦊{ d(); }⦉@6,8 + @12⦊y⦉@12 if @1,9,10,11⦊f() == y + 1⦉@1,9,10,11 => @12⦊()⦉@12, + _ => @2⦊()⦉@2, + } +}@14⦊⦉@14
+ + diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.k.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.k.-------.InstrumentCoverage.0.html new file mode 100644 index 00000000000..5792521bb2c --- /dev/null +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.k.-------.InstrumentCoverage.0.html @@ -0,0 +1,80 @@ + + + + +async.k - Coverage Spans + + + +
@0⦊fn k(x: u8) { // unused function + match x⦉@0 { + 1 => @1,4⦊()⦉@1,4, + 2 => @2,5⦊()⦉@2,5, + _ => @3⦊()⦉@3, + } +}@6⦊⦉@6
+ + diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.l.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.l.-------.InstrumentCoverage.0.html new file mode 100644 index 00000000000..cd92b88c24c --- /dev/null +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.l.-------.InstrumentCoverage.0.html @@ -0,0 +1,80 @@ + + + + +async.l - Coverage Spans + + + +
@0⦊fn l(x: u8) { + match x⦉@0 { + 1 => @1,4⦊()⦉@1,4, + 2 => @2,5⦊()⦉@2,5, + _ => @3⦊()⦉@3, + } +}@6⦊⦉@6
+ + diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.main.-------.InstrumentCoverage.0.html index 007da5c0ec1..2b0eb4f43c7 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.main.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.async/async.main.-------.InstrumentCoverage.0.html @@ -69,65 +69,101 @@ For revisions in Pull Requests (PR): -
fn main() @0,1,2,3,4,5,6,7,8,9⦊{ - let _ = g(10); - let _ = h(9); - let mut future = Box::pin(i(8)); - executor::block_on(future.as_mut()); -}⦉@0,1,2,3,4,5,6,7,8,9
+
@0,1,2,3,4,5,6,7,8,9,10,11⦊fn main() { + let _ = g(10); + let _ = h(9); + let mut future = Box::pin(i(8)); + j(7); + l(6); + executor::block_on(future.as_mut()); +}⦉@0,1,2,3,4,5,6,7,8,9,10,11
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main-{closure#0}.-------.InstrumentCoverage.0.html index b68c0a1cabe..523e839a918 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main-{closure#0}.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main-{closure#0}.-------.InstrumentCoverage.0.html @@ -70,19 +70,23 @@ For revisions in Pull Requests (PR):
|| - { - let @0⦊mut countdown = 0⦉@0; - if @0⦊is_false⦉@0 @1,3⦊{ + @0⦊{ + let mut countdown = 0; + if is_false⦉@0 @1,3⦊{ countdown = 10; +36:21-38:10: @3[1]: _3 = const ()"> countdown = 10; }⦉@1,3@2⦊⦉@2 +36:21-38:10: @3[1]: _3 = const ()"> }⦉@1,3@2⦊⦉@2 -closure.main-{closure#2} - Coverage Spans +closure.main-{closure#10} - Coverage Spans -
|| - { - let @0⦊mut countdown = 0⦉@0; - if @0⦊is_false⦉@0 @1,3⦊{ - countdown = 10; - }⦉@1,3@2⦊⦉@2 - @4,5⦊"alt string 1".to_owned() - }⦉@4,5
+
|val| + @0⦊{ + let mut countdown = 0; + if is_false⦉@0 @1,3⦊{ + countdown = 10; + }⦉@1,3@2⦊⦉@2 + @4,5,6,7,8⦊format!("'{}'", val) + }⦉@4,5,6,7,8
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main-{closure#3}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main-{closure#3}.-------.InstrumentCoverage.0.html index 140e33905fb..032a6a7e435 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main-{closure#3}.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main-{closure#3}.-------.InstrumentCoverage.0.html @@ -69,27 +69,25 @@ For revisions in Pull Requests (PR): -
|| - { - let @0⦊mut countdown = 0⦉@0; - if @0⦊is_false⦉@0 @1,3⦊{ - countdown = 10; - }⦉@1,3@2⦊⦉@2 - @4,5⦊"alt string 3".to_owned() - }⦉@4,5
+
| + mut countdown + | + @0⦊{ + if is_false⦉@0 @1,3⦊{ + countdown = 10; + }⦉@1,3@2⦊⦉@2 + @4,5⦊"closure should be unused".to_owned() + }⦉@4,5
diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#3}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main-{closure#4}.-------.InstrumentCoverage.0.html similarity index 72% rename from src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#3}.-------.InstrumentCoverage.0.html rename to src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main-{closure#4}.-------.InstrumentCoverage.0.html index adba2d9965d..df0172bdf70 100644 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#3}.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main-{closure#4}.-------.InstrumentCoverage.0.html @@ -2,7 +2,7 @@ -async.executor-block_on-VTABLE-{closure#3} - Coverage Spans +closure.main-{closure#4} - Coverage Spans -
|_| @0⦊()⦉@0
+
| _unused_arg: u8 | @0,1⦊countdown += 1⦉@0,1
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main-{closure#5}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main-{closure#5}.-------.InstrumentCoverage.0.html new file mode 100644 index 00000000000..e28038fd3fe --- /dev/null +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main-{closure#5}.-------.InstrumentCoverage.0.html @@ -0,0 +1,115 @@ + + + + +closure.main-{closure#5} - Coverage Spans + + + +
@0,1,2⦊{ + $crate::io::_print($crate::format_args_nl!($($arg)*)); + }⦉@0,1,2
+ + diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#8}-clone.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main-{closure#6}.-------.InstrumentCoverage.0.html similarity index 60% rename from src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#8}-clone.-------.InstrumentCoverage.0.html rename to src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main-{closure#6}.-------.InstrumentCoverage.0.html index 27a2ab71827..d479211aa37 100644 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.partial_eq/partial_eq.{impl#8}-clone.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main-{closure#6}.-------.InstrumentCoverage.0.html @@ -2,7 +2,7 @@ -partial_eq.{impl#8}-clone - Coverage Spans +closure.main-{closure#6} - Coverage Spans -
@0,1,2,3⦊Clone⦉@0,1,2,3
+
| _unused_arg: u8 | @0,1,2⦊{ println!("not called") }⦉@0,1,2
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main-{closure#7}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main-{closure#7}.-------.InstrumentCoverage.0.html new file mode 100644 index 00000000000..2734c0b2468 --- /dev/null +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main-{closure#7}.-------.InstrumentCoverage.0.html @@ -0,0 +1,115 @@ + + + + +closure.main-{closure#7} - Coverage Spans + + + +
| _unused_arg: u8 | @0,1,2⦊{ + println!("not called") + }⦉@0,1,2
+ + diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.g.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main-{closure#8}.-------.InstrumentCoverage.0.html similarity index 58% rename from src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.g.-------.InstrumentCoverage.0.html rename to src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main-{closure#8}.-------.InstrumentCoverage.0.html index 5a43e8162cb..a032df54ea2 100644 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.g.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main-{closure#8}.-------.InstrumentCoverage.0.html @@ -2,7 +2,7 @@ -async.g - Coverage Spans +closure.main-{closure#8} - Coverage Spans -
pub async fn g(x: u8) { - match x { - y if f().await == y => (), - _ => (), - } -}@0,1⦊⦉@0,1
+
| + _unused_arg: u8 + | @0,1,2⦊{ println!("not called") }⦉@0,1,2
diff --git a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.h.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main-{closure#9}.-------.InstrumentCoverage.0.html similarity index 58% rename from src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.h.-------.InstrumentCoverage.0.html rename to src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main-{closure#9}.-------.InstrumentCoverage.0.html index aead25eed64..3c174e03ebe 100644 --- a/src/test/run-make-fulldeps/coverage-spanview-deadcode/expected_mir_dump.async/async.h.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main-{closure#9}.-------.InstrumentCoverage.0.html @@ -2,7 +2,7 @@ -async.h - Coverage Spans +closure.main-{closure#9} - Coverage Spans -
async fn h(x: usize) { - match x { - y if foo().await[y] => (), - _ => (), - } -}@0,1⦊⦉@0,1
+
| + _unused_arg: u8 + | @0,1,2⦊{ println!("not called") }⦉@0,1,2
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main.-------.InstrumentCoverage.0.html index 2d41918efb2..702c7937064 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.closure/closure.main.-------.InstrumentCoverage.0.html @@ -69,4447 +69,10853 @@ For revisions in Pull Requests (PR): -
fn main() @0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34⦊{ -@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42⦊fn main() { + // Initialize test constants in a way that cannot be determined at compile time, to ensure - // Initialize test constants in a way that cannot be determined at compile time, to ensure + // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from - // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from + // dependent conditions. - // dependent conditions. + let is_true = std::env::args().len() == 1; - let is_true = std::env::args().len() == 1; + let is_false = ! is_true; - let is_false = ! is_true; + - + let mut some_string = Some(String::from("the string content")); - let mut some_string = Some(String::from("the string content")); + println!( - println!( + "The string or alt: {}" - "The string or alt: {}" + , - , + some_string - some_string + . - . + unwrap_or_else - unwrap_or_else + ( - ( + ⦉@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34|| +3:11-155:2: @41[38]: _0 = const ()"> ⦉@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42|| { let mut countdown = 0; if is_false { countdown = 10; } "alt string 1".to_owned() - } }@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34⦊ -@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42⦊ + ) - ) + ); - ); + - + some_string = Some(String::from("the string content")); - some_string = Some(String::from("the string content")); + let - let + a - a + = - = + ⦉@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34|| +3:11-155:2: @41[38]: _0 = const ()"> ⦉@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42|| { let mut countdown = 0; if is_false { countdown = 10; } "alt string 2".to_owned() - } }@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34⦊; -@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42⦊; + println!( - println!( + "The string or alt: {}" - "The string or alt: {}" + , - , + some_string - some_string + . - . + unwrap_or_else - unwrap_or_else + ( - ( + a - a + ) - ) + ); - ); + - + some_string = None; - some_string = None; + println!( - println!( + "The string or alt: {}" - "The string or alt: {}" + , - , + some_string - some_string + . - . + unwrap_or_else - unwrap_or_else + ( - ( + ⦉@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34|| +3:11-155:2: @41[38]: _0 = const ()"> ⦉@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42|| { let mut countdown = 0; if is_false { countdown = 10; } "alt string 3".to_owned() - } }@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34⦊ -@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42⦊ + ) - ) + ); - ); + - + some_string = None; - some_string = None; + let - let + a - a + = - = + ⦉@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34|| +3:11-155:2: @41[38]: _0 = const ()"> ⦉@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42|| { let mut countdown = 0; if is_false { countdown = 10; } "alt string 4".to_owned() - } }@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34⦊; -@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42⦊; + println!( - println!( + "The string or alt: {}" - "The string or alt: {}" + , - , + some_string - some_string + . - . + unwrap_or_else - unwrap_or_else + ( - ( + a - a + ) - ) + ); - ); +}⦉@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34
+97:9-104:6: @33[10]: _100 = &_5 +95:9-95:22: @33[13]: FakeRead(ForLet, _99) +3:11-155:2: @41[38]: _0 = const ()">
+ let + quote_closure + = + ⦉@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42|val|
+ { + let mut countdown = 0; + if is_false { + countdown = 10; + } + format!("'{}'", val) + }@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42⦊; + println!( + "Repeated, quoted string: {:?}" + , + std::iter::repeat("repeat me") + .take(5) + .map + ( + quote_closure + ) + .collect::<Vec<_>>() + ); + + let + _unused_closure + = + ⦉@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42| + mut countdown + | + { + if is_false { + countdown = 10; + } + "closure should be unused".to_owned() + }@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42⦊; + + let mut countdown = 10; + let _short_unused_closure = ⦉@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42| _unused_arg: u8 | countdown += 1@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42⦊; + + // Macros can sometimes confuse the coverage results. Compare this next assignment, with an + // unused closure that invokes the `println!()` macro, with the closure assignment above, that + // does not use a macro. The closure above correctly shows `0` executions. + let _short_unused_closure = ⦉@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42| _unused_arg: u8 | println!("not called")@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42⦊; + // The closure assignment above is executed, with a line count of `1`, but the `println!()` + // could not have been called, and yet, there is no indication that it wasn't... + + // ...but adding block braces gives the expected result, showing the block was not executed. + let _short_unused_closure_block = ⦉@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42| _unused_arg: u8 | { println!("not called") }@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42⦊; + + let _shortish_unused_closure = ⦉@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42| _unused_arg: u8 | { + println!("not called") + }@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42⦊; + + let _as_short_unused_closure = ⦉@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42| + _unused_arg: u8 + | { println!("not called") }@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42⦊; + + let _almost_as_short_unused_closure = ⦉@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42| + _unused_arg: u8 + | { println!("not called") }@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42⦊ + ; +}⦉@0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.conditions/conditions.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.conditions/conditions.main.-------.InstrumentCoverage.0.html index e6f95385910..e16b366e216 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.conditions/conditions.main.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.conditions/conditions.main.-------.InstrumentCoverage.0.html @@ -69,19 +69,20 @@ For revisions in Pull Requests (PR): -
fn main() { +
@0⦊fn main() ⦉@0{ let @0⦊mut countdown = 0⦉@0; - if @0⦊true⦉@0 @1,3⦊{ +4:9-4:22: @0[2]: FakeRead(ForLet, _1) +5:8-5:12: @0[5]: _3 = const true +5:8-5:12: @0[6]: FakeRead(ForMatchedPlace, _3)">@0⦊mut countdown = 0; + if true⦉@0 @1,3⦊{ countdown = 10; +5:13-7:6: @3[1]: _2 = const ()"> countdown = 10; }⦉@1,3@2⦊⦉@2 +5:13-7:6: @3[1]: _2 = const ()"> }⦉@1,3@2⦊⦉@2 const B: u32 = 100; let @25⦊x⦉@25 = if @6⦊countdown > 2⦉@6 { if @9,11⦊countdown < 1⦉@9,11 || @18⦊countdown > 5⦉@18@16⦊⦉@16@17⦊⦉@17 || @14⦊countdown != 9⦉@14@12⦊⦉@12@13⦊⦉@13 @20,22⦊{ +14:29-14:42: @18[3]: _15 = Gt(move _16, const 5_u32)">@18⦊countdown > 5⦉@18 || @14⦊countdown != 9⦉@14 @20,22⦊{ countdown = 0; +14:61-16:10: @22[1]: _10 = const ()"> countdown = 0; }⦉@20,22@21⦊⦉@21 +14:61-16:10: @22[1]: _10 = const ()"> }⦉@20,22@21⦊⦉@21 @23,24⦊countdown -= 5; @@ -119,17 +117,18 @@ For revisions in Pull Requests (PR): }; let @25⦊mut countdown = 0⦉@25; - if @25⦊true⦉@25 @26,28⦊{ +23:9-23:22: @25[4]: FakeRead(ForLet, _21) +24:8-24:12: @25[7]: _23 = const true +24:8-24:12: @25[8]: FakeRead(ForMatchedPlace, _23)">@25⦊mut countdown = 0; + if true⦉@25 @26,28⦊{ countdown = 10; +24:13-26:6: @28[1]: _22 = const ()"> countdown = 10; }⦉@26,28@27⦊⦉@27 +24:13-26:6: @28[1]: _22 = const ()"> }⦉@26,28@27⦊⦉@27 if @31⦊countdown > 2⦉@31 { if @34,36⦊countdown < 1⦉@34,36 || @43⦊countdown > 5⦉@43@41⦊⦉@41@42⦊⦉@42 || @39⦊countdown != 9⦉@39@37⦊⦉@37@38⦊⦉@38 @45,47⦊{ +31:29-31:42: @43[3]: _35 = Gt(move _36, const 5_i32)">@43⦊countdown > 5⦉@43 || @39⦊countdown != 9⦉@39 @45,47⦊{ countdown = 0; +31:61-33:10: @47[1]: _30 = const ()"> countdown = 0; }⦉@45,47@46⦊⦉@46 +31:61-33:10: @47[1]: _30 = const ()"> }⦉@45,47@46⦊⦉@46 @48,49⦊countdown -= 5⦉@48,49; } else { @@ -164,190 +160,167 @@ For revisions in Pull Requests (PR): if @50⦊true⦉@50 { - // Demonstrate the difference with `TerminatorKind::Assert` as of 2020-11-15. Assert is no - // longer treated as a `BasicCoverageBlock` terminator, which changed the coverage region, - // for the executed `then` block above, to include the closing brace on line 30. That - // changed the line count, but the coverage code region (for the `else if` condition) is - // still valid. - // - // Note that `if` (then) and `else` blocks include the closing brace in their coverage - // code regions when the last line in the block ends in a semicolon, because the Rust - // compiler inserts a `StatementKind::Assign` to assign `const ()` to a `Place`, for the - // empty value for the executed block. When the last line does not end in a semicolon - // (that is, when the block actually results in a value), the additional `Assign` is not - // generated, and the brace is not included. - let @51,53⦊mut countdown = 0⦉@51,53; - if @51,53⦊true⦉@51,53 @54,56⦊{ - countdown = 10; - }⦉@54,56@55⦊⦉@55 + let @51,53⦊mut countdown = 0; + if true⦉@51,53 @54,56⦊{ + countdown = 10; + }⦉@54,56@55⦊⦉@55 - if @57⦊countdown > 7⦉@57 @58,60,61⦊{ - countdown -= 4; - }⦉@58,60,61 - // The closing brace of the `then` branch is now included in the coverage region, and shown - // as "executed" (giving its line a count of 1 here). Since, in the original version above, - // the closing brace shares the same line as the `else if` conditional expression (which is - // not executed if the first `then` condition is true), only the condition's code region is - // marked with a count of 0 now. - else if @59⦊countdown > 2⦉@59 { - if @62,64⦊countdown < 1⦉@62,64 || @71⦊countdown > 5⦉@71@69⦊⦉@69@70⦊⦉@70 || @67⦊countdown != 9⦉@67@65⦊⦉@65@66⦊⦉@66 @73,75⦊{ - countdown = 0; - }⦉@73,75@74⦊⦉@74 - @76,77⦊countdown -= 5⦉@76,77; + if @57⦊countdown > 7⦉@57 @58,60,61⦊{ + countdown -= 4; + }⦉@58,60,61 + else if @59⦊countdown > 2⦉@59 { + if @62,64⦊countdown < 1⦉@62,64 || @71⦊countdown > 5⦉@71 || @67⦊countdown != 9⦉@67 @73,75⦊{ + countdown = 0; + }⦉@73,75@74⦊⦉@74 + @76,77⦊countdown -= 5⦉@76,77; } else { - @63⦊return⦉@63; + @63⦊return⦉@63; } - }@78⦊⦉@78@52⦊⦉@52 + }@52⦊⦉@52 // Note: closing brace shows uncovered (vs. `0` for implicit else) because condition literal + // `true` was const-evaluated. The compiler knows the `if` block will be executed. - let @79⦊mut countdown = 0⦉@79; - if @79⦊true⦉@79 @80,82⦊{ - countdown = 1; - }⦉@80,82@81⦊⦉@81 + let @79⦊mut countdown = 0; + if true⦉@79 @80,82⦊{ + countdown = 1; + }⦉@80,82@81⦊⦉@81 - let @106⦊z⦉@106 = if @83⦊countdown > 7⦉@83 @84,86,87⦊{ - countdown -= 4; - }⦉@84,86,87 else if @85⦊countdown > 2⦉@85 { - if @88,90⦊countdown < 1⦉@88,90 || @97⦊countdown > 5⦉@97@95⦊⦉@95@96⦊⦉@96 || @93⦊countdown != 9⦉@93@91⦊⦉@91@92⦊⦉@92 @99,101⦊{ - countdown = 0; - }⦉@99,101@100⦊⦉@100 - @102,103⦊countdown -= 5⦉@102,103; + let @106⦊z⦉@106 = if @83⦊countdown > 7⦉@83 @84,86,87⦊{ + countdown -= 4; + }⦉@84,86,87 else if @85⦊countdown > 2⦉@85 { + if @88,90⦊countdown < 1⦉@88,90 || @97⦊countdown > 5⦉@97 || @93⦊countdown != 9⦉@93 @99,101⦊{ + countdown = 0; + }⦉@99,101@100⦊⦉@100 + @102,103⦊countdown -= 5⦉@102,103; } else { - let @89,104,105⦊should_be_reachable = countdown; - println!("reached"); - return⦉@89,104,105; + let @89,104,105⦊should_be_reachable = countdown; + println!("reached"); + return⦉@89,104,105; }; - let @127⦊w⦉@127 = if @106⦊countdown > 7⦉@106 @107,109,110⦊{ - countdown -= 4; - }⦉@107,109,110 else if @108⦊countdown > 2⦉@108 { - if @111,113⦊countdown < 1⦉@111,113 || @120⦊countdown > 5⦉@120@118⦊⦉@118@119⦊⦉@119 || @116⦊countdown != 9⦉@116@114⦊⦉@114@115⦊⦉@115 @122,124⦊{ - countdown = 0; - }⦉@122,124@123⦊⦉@123 - @125,126⦊countdown -= 5⦉@125,126; + let @127⦊w⦉@127 = if @106⦊countdown > 7⦉@106 @107,109,110⦊{ + countdown -= 4; + }⦉@107,109,110 else if @108⦊countdown > 2⦉@108 { + if @111,113⦊countdown < 1⦉@111,113 || @120⦊countdown > 5⦉@120 || @116⦊countdown != 9⦉@116 @122,124⦊{ + countdown = 0; + }⦉@122,124@123⦊⦉@123 + @125,126⦊countdown -= 5⦉@125,126; } else { - @112⦊return⦉@112; + @112⦊return⦉@112; }; -}@130⦊⦉@130@131⦊⦉@131
+}@131⦊⦉@131
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.dead_code/dead_code.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.dead_code/dead_code.main.-------.InstrumentCoverage.0.html new file mode 100644 index 00000000000..59d00600738 --- /dev/null +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.dead_code/dead_code.main.-------.InstrumentCoverage.0.html @@ -0,0 +1,151 @@ + + + + +dead_code.main - Coverage Spans + + + +
@0,1,2,3⦊fn main() { + // Initialize test constants in a way that cannot be determined at compile time, to ensure + // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from + // dependent conditions. + let is_true = std::env::args().len() == 1; + + let mut countdown = 0; + if is_true⦉@0,1,2,3 @4,6⦊{ + countdown = 10; + }⦉@4,6@5⦊⦉@5 +}@7⦊⦉@7
+ + diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.dead_code/dead_code.unused_fn.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.dead_code/dead_code.unused_fn.-------.InstrumentCoverage.0.html new file mode 100644 index 00000000000..1a535b93788 --- /dev/null +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.dead_code/dead_code.unused_fn.-------.InstrumentCoverage.0.html @@ -0,0 +1,151 @@ + + + + +dead_code.unused_fn - Coverage Spans + + + +
@0,1,2,3⦊fn unused_fn() { + // Initialize test constants in a way that cannot be determined at compile time, to ensure + // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from + // dependent conditions. + let is_true = std::env::args().len() == 1; + + let mut countdown = 0; + if is_true⦉@0,1,2,3 @4,6⦊{ + countdown = 10; + }⦉@4,6@5⦊⦉@5 +}@7⦊⦉@7
+ + diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.dead_code/dead_code.unused_pub_fn_not_in_library.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.dead_code/dead_code.unused_pub_fn_not_in_library.-------.InstrumentCoverage.0.html new file mode 100644 index 00000000000..6eff51ad89c --- /dev/null +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.dead_code/dead_code.unused_pub_fn_not_in_library.-------.InstrumentCoverage.0.html @@ -0,0 +1,151 @@ + + + + +dead_code.unused_pub_fn_not_in_library - Coverage Spans + + + +
@0,1,2,3⦊pub fn unused_pub_fn_not_in_library() { + // Initialize test constants in a way that cannot be determined at compile time, to ensure + // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from + // dependent conditions. + let is_true = std::env::args().len() == 1; + + let mut countdown = 0; + if is_true⦉@0,1,2,3 @4,6⦊{ + countdown = 10; + }⦉@4,6@5⦊⦉@5 +}@7⦊⦉@7
+ + diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.drop_trait/drop_trait.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.drop_trait/drop_trait.main.-------.InstrumentCoverage.0.html index 8d6f936aadc..fa3c4b3c312 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.drop_trait/drop_trait.main.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.drop_trait/drop_trait.main.-------.InstrumentCoverage.0.html @@ -69,22 +69,42 @@ For revisions in Pull Requests (PR): -
fn main() -> Result<(),u8> { - let @0⦊_firecracker = Firework { strength: 1 }; +17:9-17:13: @0[5]: FakeRead(ForLet, _2) +19:8-19:12: @0[8]: _4 = const true +19:8-19:12: @0[9]: FakeRead(ForMatchedPlace, _4)">@0⦊fn main() -> Result<(),u8> { +17:9-17:13: @0[5]: FakeRead(ForLet, _2) +19:8-19:12: @0[8]: _4 = const true +19:8-19:12: @0[9]: FakeRead(ForMatchedPlace, _4)"> let _firecracker = Firework { strength: 1 }; let _tnt = Firework { strength: 100 }⦉@0; - - if @0⦊true⦉@0 { +17:9-17:13: @0[5]: FakeRead(ForLet, _2) +19:8-19:12: @0[8]: _4 = const true +19:8-19:12: @0[9]: FakeRead(ForMatchedPlace, _4)"> + let _tnt = Firework { strength: 100 }; + + if true⦉@0 { return Err(1)⦉@1,3,4,5,9,10; - } - - let _ = }@2,6,7,8⦊Firework { strength: 1000 }; -@2,6,7,8⦊ + - let _ = Firework { strength: 1000 }; + + Ok(())⦉@2,6,7,8 }@11⦊⦉@11
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.drop_trait/drop_trait.{impl#0}-drop.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.drop_trait/drop_trait.{impl#0}-drop.-------.InstrumentCoverage.0.html index 60a24df9ba6..b5dedeec8ac 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.drop_trait/drop_trait.{impl#0}-drop.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.drop_trait/drop_trait.{impl#0}-drop.-------.InstrumentCoverage.0.html @@ -69,7 +69,7 @@ For revisions in Pull Requests (PR): -
fn drop(&mut self) @0,1,2,3⦊{ +11:6-11:6: @3.Return: return">@0,1,2,3⦊fn drop(&mut self) { fn main() -> Result<(),u8> { - let @0,1,2,3⦊mut firecracker = Firework { strength: 1 }; +28:5-28:28: @2.Call: _7 = Firework::<f64>::set_strength(move _8, const 300.30000000000001f64) -> [return: bb3, unwind: bb15] +30:8-30:12: @3[4]: _10 = const true +30:8-30:12: @3[5]: FakeRead(ForMatchedPlace, _10)">@0,1,2,3⦊fn main() -> Result<(),u8> { firecracker.set_strength(2); +28:5-28:28: @2.Call: _7 = Firework::<f64>::set_strength(move _8, const 300.30000000000001f64) -> [return: bb3, unwind: bb15] +30:8-30:12: @3[4]: _10 = const true +30:8-30:12: @3[5]: FakeRead(ForMatchedPlace, _10)"> let mut firecracker = Firework { strength: 1 }; +28:5-28:28: @2.Call: _7 = Firework::<f64>::set_strength(move _8, const 300.30000000000001f64) -> [return: bb3, unwind: bb15] +30:8-30:12: @3[4]: _10 = const true +30:8-30:12: @3[5]: FakeRead(ForMatchedPlace, _10)"> firecracker.set_strength(2); let mut tnt = Firework { strength: 100.1 }; +28:5-28:28: @2.Call: _7 = Firework::<f64>::set_strength(move _8, const 300.30000000000001f64) -> [return: bb3, unwind: bb15] +30:8-30:12: @3[4]: _10 = const true +30:8-30:12: @3[5]: FakeRead(ForMatchedPlace, _10)"> tnt.set_strength(200.1); +28:5-28:28: @2.Call: _7 = Firework::<f64>::set_strength(move _8, const 300.30000000000001f64) -> [return: bb3, unwind: bb15] +30:8-30:12: @3[4]: _10 = const true +30:8-30:12: @3[5]: FakeRead(ForMatchedPlace, _10)"> let mut tnt = Firework { strength: 100.1 }; tnt.set_strength(300.3)⦉@0,1,2,3; - - if @0,1,2,3⦊true⦉@0,1,2,3 { +28:5-28:28: @2.Call: _7 = Firework::<f64>::set_strength(move _8, const 300.30000000000001f64) -> [return: bb3, unwind: bb15] +30:8-30:12: @3[4]: _10 = const true +30:8-30:12: @3[5]: FakeRead(ForMatchedPlace, _10)"> tnt.set_strength(200.1); + tnt.set_strength(300.3); + + if true⦉@0,1,2,3 { return Err(1)⦉@4,6,7,8,12,13; - } - - let _ = @5,9,10,11⦊Firework { strength: 1000 }; - - Ok(())⦉@5,9,10,11 -}@14⦊⦉@14
+ }@5,9,10,11⦊ // The remaining lines below have no coverage because `if true` (with the constant literal + // `true`) is guaranteed to execute the `then` block, which is also guaranteed to `return`. + // Thankfully, in the normal case, conditions are not guaranteed ahead of time, and as shown + // in other tests, the lines below would have coverage (which would show they had `0` + // executions, assuming the condition still evaluated to `true`). + + let _ = Firework { strength: 1000 }; + + Ok(())⦉@5,9,10,11 +}@14⦊⦉@14
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.generics/generics.{impl#0}-set_strength.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.generics/generics.{impl#0}-set_strength.-------.InstrumentCoverage.0.html index b10da561da9..329641d47bd 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.generics/generics.{impl#0}-set_strength.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.generics/generics.{impl#0}-set_strength.-------.InstrumentCoverage.0.html @@ -69,10 +69,10 @@ For revisions in Pull Requests (PR): -
fn set_strength(&mut self, new_strength: T) @0⦊{ +12:6-12:6: @0.Return: return">@0⦊fn set_strength(&mut self, new_strength: T) { fn drop(&mut self) @0,1,2,3⦊{ +19:6-19:6: @3.Return: return">@0,1,2,3⦊fn drop(&mut self) { fn main() { - // Initialize test constants in a way that cannot be determined at compile time, to ensure - // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from - // dependent conditions. - let - @0,1,2,3⦊is_true +15:9-16:14: @3[3]: FakeRead(ForLet, _5) +21:9-21:16: @3[5]: _6 = _1 +21:9-21:16: @3[6]: FakeRead(ForMatchedPlace, _6)">@0,1,2,3⦊fn main() { = +15:9-16:14: @3[3]: FakeRead(ForLet, _5) +21:9-21:16: @3[5]: _6 = _1 +21:9-21:16: @3[6]: FakeRead(ForMatchedPlace, _6)"> // Initialize test constants in a way that cannot be determined at compile time, to ensure std::env::args().len() +15:9-16:14: @3[3]: FakeRead(ForLet, _5) +21:9-21:16: @3[5]: _6 = _1 +21:9-21:16: @3[6]: FakeRead(ForMatchedPlace, _6)"> // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from == +15:9-16:14: @3[3]: FakeRead(ForLet, _5) +21:9-21:16: @3[5]: _6 = _1 +21:9-21:16: @3[6]: FakeRead(ForMatchedPlace, _6)"> // dependent conditions. 1 +15:9-16:14: @3[3]: FakeRead(ForLet, _5) +21:9-21:16: @3[5]: _6 = _1 +21:9-21:16: @3[6]: FakeRead(ForMatchedPlace, _6)"> let ; +15:9-16:14: @3[3]: FakeRead(ForLet, _5) +21:9-21:16: @3[5]: _6 = _1 +21:9-21:16: @3[6]: FakeRead(ForMatchedPlace, _6)"> is_true let +15:9-16:14: @3[3]: FakeRead(ForLet, _5) +21:9-21:16: @3[5]: _6 = _1 +21:9-21:16: @3[6]: FakeRead(ForMatchedPlace, _6)"> = mut +15:9-16:14: @3[3]: FakeRead(ForLet, _5) +21:9-21:16: @3[5]: _6 = _1 +21:9-21:16: @3[6]: FakeRead(ForMatchedPlace, _6)"> std::env::args().len() countdown +15:9-16:14: @3[3]: FakeRead(ForLet, _5) +21:9-21:16: @3[5]: _6 = _1 +21:9-21:16: @3[6]: FakeRead(ForMatchedPlace, _6)"> == = +15:9-16:14: @3[3]: FakeRead(ForLet, _5) +21:9-21:16: @3[5]: _6 = _1 +21:9-21:16: @3[6]: FakeRead(ForMatchedPlace, _6)"> 1 0⦉@0,1,2,3 - ; - if - @0,1,2,3⦊is_true⦉@0,1,2,3 +15:9-16:14: @3[3]: FakeRead(ForLet, _5) +21:9-21:16: @3[5]: _6 = _1 +21:9-21:16: @3[6]: FakeRead(ForMatchedPlace, _6)"> ; + let + mut + countdown + = + 0 + ; + if + is_true⦉@0,1,2,3 @4,6⦊{ +22:5-27:6: @6[1]: _0 = const ()">@4,6⦊{ countdown +22:5-27:6: @6[1]: _0 = const ()"> countdown = +22:5-27:6: @6[1]: _0 = const ()"> = 10 +22:5-27:6: @6[1]: _0 = const ()"> 10 ; +22:5-27:6: @6[1]: _0 = const ()"> ; }⦉@4,6@5⦊⦉@5 +22:5-27:6: @6[1]: _0 = const ()"> }⦉@4,6@5⦊⦉@5 }@7⦊⦉@7
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.if_else/if_else.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.if_else/if_else.main.-------.InstrumentCoverage.0.html index 586014afeba..5b2cce4f648 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.if_else/if_else.main.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.if_else/if_else.main.-------.InstrumentCoverage.0.html @@ -69,11 +69,7 @@ For revisions in Pull Requests (PR): -
fn main() { - // Initialize test constants in a way that cannot be determined at compile time, to ensure - // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from - // dependent conditions. - let @0,1,2,3⦊is_true = std::env::args().len() == 1; +11:9-11:16: @3[7]: FakeRead(ForMatchedPlace, _7)">@0,1,2,3⦊fn main() { + // Initialize test constants in a way that cannot be determined at compile time, to ensure + // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from + // dependent conditions. + let is_true = std::env::args().len() == 1; fn default_trait_func(&mut self) @0,1,2⦊{ +36:10-36:10: @2.Return: return">@0,1,2⦊fn default_trait_func(&mut self) { fn in_func(a: u32) { - let @0,1,2,3,4⦊b = 1; +22:6-22:6: @4.Return: return">@0,1,2,3,4⦊fn in_func(a: u32) { + let b = 1; fn trait_func(&mut self, incr: u32) @0,1,2⦊{ +43:10-43:10: @2.Return: return">@0,1,2⦊fn trait_func(&mut self, incr: u32) { fn main() { +
@0,1,2,3⦊fn main() ⦉@0,1,2,3{ // Initialize test constants in a way that cannot be determined at compile time, to ensure // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from // dependent conditions. @@ -79,31 +79,41 @@ For revisions in Pull Requests (PR): 7:19-7:46: @2[1]: _1 = Eq(move _2, const 1_usize) 7:9-7:16: @2[3]: FakeRead(ForLet, _1) 9:25-9:26: @3[2]: _5 = const 0_u32 -9:9-9:22: @3[3]: FakeRead(ForLet, _5)">@0,1,2,3⦊is_true = std::env::args().len() == 1; +9:9-9:22: @3[3]: FakeRead(ForLet, _5) +10:8-10:15: @3[6]: _7 = _1 +10:8-10:15: @3[7]: FakeRead(ForMatchedPlace, _7)">@0,1,2,3⦊is_true = std::env::args().len() == 1; +9:9-9:22: @3[3]: FakeRead(ForLet, _5) +10:8-10:15: @3[6]: _7 = _1 +10:8-10:15: @3[7]: FakeRead(ForMatchedPlace, _7)"> let mut countdown = 0⦉@0,1,2,3; - if @0,1,2,3⦊is_true⦉@0,1,2,3 @4,6⦊{ +9:9-9:22: @3[3]: FakeRead(ForLet, _5) +10:8-10:15: @3[6]: _7 = _1 +10:8-10:15: @3[7]: FakeRead(ForMatchedPlace, _7)"> let mut countdown = 0; + if is_true⦉@0,1,2,3 @4,6⦊{ countdown = 10; +10:16-12:6: @6[1]: _6 = const ()"> countdown = 10; }⦉@4,6@5⦊⦉@5 +10:16-12:6: @6[1]: _6 = const ()"> }⦉@4,6@5⦊⦉@5 mod in_mod { const IN_MOD_CONST: u32 = 1000; @@ -142,16 +152,13 @@ For revisions in Pull Requests (PR): if @7⦊is_true⦉@7 @8,10,11⦊{ +48:16-50:6: @11[2]: _8 = const ()">@8,10,11⦊{ in_func(countdown); +48:16-50:6: @11[2]: _8 = const ()"> in_func(countdown); }⦉@8,10,11@9⦊⦉@9 +48:16-50:6: @11[2]: _8 = const ()"> }⦉@8,10,11@9⦊⦉@9 let fn main() { - // Initialize test constants in a way that cannot be determined at compile time, to ensure - // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from - // dependent conditions. - let @0,1,2,3⦊is_true = std::env::args().len() == 1; +9:24-9:29: @3[8]: _7 = (_8.2: i32) +10:8-10:15: @3[12]: _10 = _1 +10:8-10:15: @3[13]: FakeRead(ForMatchedPlace, _10)">@0,1,2,3⦊fn main() { +9:24-9:29: @3[8]: _7 = (_8.2: i32) +10:8-10:15: @3[12]: _10 = _1 +10:8-10:15: @3[13]: FakeRead(ForMatchedPlace, _10)"> // Initialize test constants in a way that cannot be determined at compile time, to ensure let (mut a, mut b, mut c) = (0, 0, 0)⦉@0,1,2,3; - if @0,1,2,3⦊is_true⦉@0,1,2,3 // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from + // dependent conditions. + let is_true = std::env::args().len() == 1; + + let (mut a, mut b, mut c) = (0, 0, 0); + if is_true⦉@0,1,2,3 @4,6⦊{ +10:16-14:6: @6[3]: _9 = const ()">@4,6⦊{ a = 1; +10:16-14:6: @6[3]: _9 = const ()"> a = 1; b = 10; +10:16-14:6: @6[3]: _9 = const ()"> b = 10; c = 100; +10:16-14:6: @6[3]: _9 = const ()"> c = 100; }⦉@4,6@5⦊⦉@5 +10:16-14:6: @6[3]: _9 = const ()"> }⦉@4,6@5⦊⦉@5 let @11⦊somebool⦉@11 = @@ -135,7 +185,7 @@ For revisions in Pull Requests (PR): || @10⦊b < c⦉@10@8⦊⦉@8@9⦊⦉@9 +20:13-20:18: @10[5]: _15 = Lt(move _16, move _17)">@10⦊b < c⦉@10 ; let @15⦊somebool⦉@15 @@ -146,18 +196,18 @@ For revisions in Pull Requests (PR): || @14⦊b < c⦉@14@12⦊⦉@12@13⦊⦉@13 +27:13-27:18: @14[5]: _22 = Lt(move _23, move _24)">@14⦊b < c⦉@14 ; let @19⦊somebool⦉@19 = @15⦊a < b⦉@15 && @18⦊b < c⦉@18@16⦊⦉@16@17⦊⦉@17; +29:29-29:34: @18[5]: _29 = Lt(move _30, move _31)">@18⦊b < c⦉@18; let @23⦊somebool⦉@23 = @19⦊b < a⦉@19 && @22⦊b < c⦉@22@20⦊⦉@20@21⦊⦉@21; +30:29-30:34: @22[5]: _36 = Lt(move _37, move _38)">@22⦊b < c⦉@22; if is_true⦉@23 @24,26⦊{ +35:5-38:6: @26[1]: _39 = const ()">@24,26⦊{ a = 2 +35:5-38:6: @26[1]: _39 = const ()"> a = 2 ; +35:5-38:6: @26[1]: _39 = const ()"> ; }⦉@24,26@25⦊⦉@25 +35:5-38:6: @26[1]: _39 = const ()"> }⦉@24,26@25⦊⦉@25 if if @31⦊!is_true⦉@31 @32,34⦊{ +52:17-54:6: @34[1]: _44 = const ()">@32,34⦊{ a = 2; +52:17-54:6: @34[1]: _44 = const ()"> a = 2; }⦉@32,34@33⦊⦉@33 +52:17-54:6: @34[1]: _44 = const ()"> }⦉@32,34@33⦊⦉@33 if @35⦊is_true⦉@35 fn main() @0,1⦊{ +13:2-13:2: @1.Return: return">@0,1⦊fn main() { fn main() @0,1,2,3⦊{ +25:2-25:2: @3.Return: return">@0,1,2,3⦊fn main() { fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { - if @0⦊true⦉@0 { +
@0⦊fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + if true⦉@0 { if @1,3⦊false⦉@1,3 { while @6,7⦊true⦉@6,7 @8,10⦊{ - }⦉@8,10 - }@9⦊⦉@9@5⦊⦉@5 - @6,7⦊true⦉@6,7 @8,10⦊{ + }⦉@8,10 + }@5⦊⦉@5 + @11,12,13,14⦊write!(f, "error")⦉@11,12,13,14@11,12,13,14⦊write!(f, "error")⦉@11,12,13,14@16,18,19,20⦊?⦉@16,18,19,20; - } else @2⦊{ - }⦉@2@15⦊⦉@15 + } else @2⦊{ + }⦉@2 @21⦊Ok(())⦉@21 }@22⦊⦉@22
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.nested_loops/nested_loops.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.nested_loops/nested_loops.main.-------.InstrumentCoverage.0.html index 0f3ea3ce6a8..cb60276aa12 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.nested_loops/nested_loops.main.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.nested_loops/nested_loops.main.-------.InstrumentCoverage.0.html @@ -69,14 +69,20 @@ For revisions in Pull Requests (PR): -
fn main() { - let @0,1,2,3⦊is_true = std::env::args().len() == 1; +3:9-3:22: @3[3]: FakeRead(ForLet, _5)">@0,1,2,3⦊fn main() { + let is_true = std::env::args().len() == 1; @14,16⦊a < 30⦉@14,16 { @17,19⦊break⦉@17,19; - } - }@18,20,21⦊a -= 5; - b -= 5⦉@18,20,21; - if @18,20,21⦊b < 90⦉@18,20,21 { +14:16-14:22: @21[6]: FakeRead(ForMatchedPlace, _31)">@18,20,21⦊ + a -= 5; + b -= 5; + if b < 90⦉@18,20,21 { @26,28⦊break 'outer⦉@26,28; } else @27,29⦊{ +18:24-20:18: @29[1]: _24 = const ()">@27,29⦊{ a -= 2; +18:24-20:18: @29[1]: _24 = const ()"> a -= 2; } - }⦉@27,29@23⦊⦉@23 - }@30⦊⦉@30 - }⦉@27,29 + }@23⦊⦉@23 + } + @31,32⦊countdown -= 1⦉@31,32; - }@7⦊⦉@7 + } }@33⦊⦉@33
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.overflow/overflow.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.overflow/overflow.main.-------.InstrumentCoverage.0.html index 4f237d6561d..6739634f65b 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.overflow/overflow.main.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.overflow/overflow.main.-------.InstrumentCoverage.0.html @@ -69,9 +69,10 @@ For revisions in Pull Requests (PR): -
fn main() -> Result<(),u8> { - let @0⦊mut countdown = 10⦉@0; +
@0⦊fn main() -> Result<(),u8> { + let mut countdown = 10⦉@0; while @1,2⦊countdown > 0⦉@1,2 { @@ -245,14 +246,14 @@ For revisions in Pull Requests (PR): 23:13-23:44: @17.Call: _32 = Arguments::new_v1(move _33, move _37) -> [return: bb18, unwind: bb23] 23:13-23:44: @18.Call: _31 = _print(move _32) -> [return: bb19, unwind: bb23] 23:13-23:44: @19[6]: _30 = const () -21:33-24:10: @19[8]: _6 = const ()"> }⦉@13,15,16,17,18,19@14⦊⦉@14@20⦊⦉@20 - }⦉@13,15,16,17,18,19@14⦊⦉@14 + @21,22⦊countdown -= 1⦉@21,22; } - @4⦊Ok(()) -}⦉@4
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.overflow/overflow.might_overflow.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.overflow/overflow.might_overflow.-------.InstrumentCoverage.0.html index b1dbc40ee20..c72ad426356 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.overflow/overflow.might_overflow.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.overflow/overflow.might_overflow.-------.InstrumentCoverage.0.html @@ -69,10 +69,12 @@ For revisions in Pull Requests (PR): -
fn might_overflow(to_add: u32) -> u32 { - if @0⦊to_add > 5⦉@0 @0⦊fn might_overflow(to_add: u32) -> u32 { + if to_add > 5⦉@0 @1,3,4,5⦊{ +5:19-7:6: @5[7]: _2 = const ()">@1,3,4,5⦊{ println!("this will probably overflow"); +5:19-7:6: @5[7]: _2 = const ()"> println!("this will probably overflow"); }⦉@1,3,4,5@2⦊⦉@2 +5:19-7:6: @5[7]: _2 = const ()"> }⦉@1,3,4,5@2⦊⦉@2 let fn main() -> Result<(),u8> { - let @0⦊mut countdown = 10⦉@0; +
@0⦊fn main() -> Result<(), u8> { + let mut countdown = 10⦉@0; while @1,2⦊countdown > 0⦉@1,2 { @@ -89,14 +90,14 @@ For revisions in Pull Requests (PR): might_panic(false); }⦉@10,12,13@11⦊⦉@11@14⦊⦉@14 - }⦉@10,12,13@11⦊⦉@11 + @15,16⦊countdown -= 1⦉@15,16; } - @4⦊Ok(()) -}⦉@4
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.panic_unwind/panic_unwind.might_panic.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.panic_unwind/panic_unwind.might_panic.-------.InstrumentCoverage.0.html index d6002e70af2..290b7b85099 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.panic_unwind/panic_unwind.might_panic.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.panic_unwind/panic_unwind.might_panic.-------.InstrumentCoverage.0.html @@ -69,7 +69,7 @@ For revisions in Pull Requests (PR): -
fn might_panic(should_panic: bool) { +
@0⦊fn might_panic(should_panic: bool) ⦉@0{ if @0⦊should_panic⦉@0 { fn main() @0,1,2,3,4,5,6,7,8⦊{ +26:2-26:2: @8.Return: return">@0,1,2,3,4,5,6,7,8⦊fn main() { pub fn new(major: usize, minor: usize, patch: usize) -> Self { - @0⦊Self { +18:6-18:6: @0.Return: return">@0⦊pub fn new(major: usize, minor: usize, patch: usize) -> Self { + Self { @14⦊@11,12⦊@13⦊Ord⦉@13⦉@11,12⦉@14@15⦊⦉@15
+
@0,1⦊⦉@0,1Ord@15⦊⦉@15
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#2}-ge-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#2}-ge-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html index 52e6b526276..47f9ab2bd5e 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#2}-ge-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#2}-ge-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html @@ -69,7 +69,7 @@ For revisions in Pull Requests (PR): -
minor: usize, +
minor: usize, // Count: 1 - `PartialOrd` compared `minor` values in 3.2.1 vs. 3.3.0 @0,1,2,3,4⦊⦉@0,1,2,3,4PartialOrd@0,1,2,3,4⦊⦉@0,1,2,3,4
+4:39-4:49: @2[10]: _22 = &_5">@0,1,2,3,4⦊⦉@0,1,2,3,4PartialOrd
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#2}-gt-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#2}-gt-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html index 0ad35d701aa..2b9a13fe060 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#2}-gt-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#2}-gt-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html @@ -69,7 +69,7 @@ For revisions in Pull Requests (PR): -
minor: usize, +
minor: usize, // Count: 1 - `PartialOrd` compared `minor` values in 3.2.1 vs. 3.3.0 @0,1,2,3,4⦊⦉@0,1,2,3,4PartialOrd@0,1,2,3,4⦊⦉@0,1,2,3,4
+4:39-4:49: @2[10]: _22 = &_5">@0,1,2,3,4⦊⦉@0,1,2,3,4PartialOrd
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#2}-le-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#2}-le-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html index d43d8526a88..5c95a635f07 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#2}-le-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#2}-le-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html @@ -69,7 +69,7 @@ For revisions in Pull Requests (PR): -
minor: usize, +
minor: usize, // Count: 1 - `PartialOrd` compared `minor` values in 3.2.1 vs. 3.3.0 @0,1,2,3,4⦊⦉@0,1,2,3,4PartialOrd@0,1,2,3,4⦊⦉@0,1,2,3,4
+4:39-4:49: @2[10]: _22 = &_5">@0,1,2,3,4⦊⦉@0,1,2,3,4PartialOrd
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#2}-lt-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#2}-lt-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html index a941c08da5d..b2b3e172d53 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#2}-lt-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#2}-lt-{closure#0}-{closure#0}.-------.InstrumentCoverage.0.html @@ -69,7 +69,7 @@ For revisions in Pull Requests (PR): -
minor: usize, +
minor: usize, // Count: 1 - `PartialOrd` compared `minor` values in 3.2.1 vs. 3.3.0 @0,1,2,3,4⦊⦉@0,1,2,3,4PartialOrd@0,1,2,3,4⦊⦉@0,1,2,3,4
+4:39-4:49: @2[10]: _22 = &_5">@0,1,2,3,4⦊⦉@0,1,2,3,4PartialOrd
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#2}-partial_cmp.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#2}-partial_cmp.-------.InstrumentCoverage.0.html index c5a806f7c17..2f5092bd51f 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#2}-partial_cmp.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#2}-partial_cmp.-------.InstrumentCoverage.0.html @@ -69,10 +69,6 @@ For revisions in Pull Requests (PR): -
@17⦊@14,15⦊@16⦊PartialOrd⦉@16⦉@14,15⦉@17@18⦊⦉@18
+
@0,1⦊⦉@0,1PartialOrd@18⦊⦉@18
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#4}-assert_receiver_is_total_eq.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#4}-assert_receiver_is_total_eq.-------.InstrumentCoverage.0.html index b4beef867eb..ebb8b1c15ce 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#4}-assert_receiver_is_total_eq.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#4}-assert_receiver_is_total_eq.-------.InstrumentCoverage.0.html @@ -70,6 +70,6 @@ For revisions in Pull Requests (PR):
@0⦊Eq⦉@0
+4:37-4:37: @0.Return: return">@0⦊⦉@0Eq
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#6}-eq.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#6}-eq.-------.InstrumentCoverage.0.html index 92f37e4b89a..2e128181c5e 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#6}-eq.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#6}-eq.-------.InstrumentCoverage.0.html @@ -69,9 +69,6 @@ For revisions in Pull Requests (PR): -
@2⦊@1⦊PartialEq⦉@1⦉@2@4⦊⦉@4
+
@0⦊⦉@0PartialEq@4⦊⦉@4
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#6}-ne.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#6}-ne.-------.InstrumentCoverage.0.html index df561a79224..637b1c62086 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#6}-ne.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.partial_eq/partial_eq.{impl#6}-ne.-------.InstrumentCoverage.0.html @@ -69,13 +69,6 @@ For revisions in Pull Requests (PR): -
@2⦊@5⦊@6⦊@1⦊PartialEq⦉@1⦉@6⦉@5⦉@2@4⦊⦉@4
+
@0⦊⦉@0PartialEq@4⦊⦉@4
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.simple_loop/simple_loop.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.simple_loop/simple_loop.main.-------.InstrumentCoverage.0.html index 29d21cf7ba4..1233dfb5bab 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.simple_loop/simple_loop.main.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.simple_loop/simple_loop.main.-------.InstrumentCoverage.0.html @@ -69,53 +69,108 @@ For revisions in Pull Requests (PR): -
fn main() { - // Initialize test constants in a way that cannot be determined at compile time, to ensure - // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from - // dependent conditions. - let @0,1,2,3⦊is_true = std::env::args().len() == 1; +9:9-9:22: @3[3]: FakeRead(ForLet, _5) +12:9-12:16: @3[6]: _7 = _1 +12:9-12:16: @3[7]: FakeRead(ForMatchedPlace, _7)">@0,1,2,3⦊fn main() { +9:9-9:22: @3[3]: FakeRead(ForLet, _5) +12:9-12:16: @3[6]: _7 = _1 +12:9-12:16: @3[7]: FakeRead(ForMatchedPlace, _7)"> // Initialize test constants in a way that cannot be determined at compile time, to ensure let mut countdown = 0⦉@0,1,2,3; - - if - @0,1,2,3⦊is_true⦉@0,1,2,3 +9:9-9:22: @3[3]: FakeRead(ForLet, _5) +12:9-12:16: @3[6]: _7 = _1 +12:9-12:16: @3[7]: FakeRead(ForMatchedPlace, _7)"> // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from + // dependent conditions. + let is_true = std::env::args().len() == 1; + + let mut countdown = 0; + + if + is_true⦉@0,1,2,3 @4,6⦊{ +13:5-18:6: @6[1]: _6 = const ()">@4,6⦊{ countdown +13:5-18:6: @6[1]: _6 = const ()"> countdown = +13:5-18:6: @6[1]: _6 = const ()"> = 10 +13:5-18:6: @6[1]: _6 = const ()"> 10 ; +13:5-18:6: @6[1]: _6 = const ()"> ; }⦉@4,6@5⦊⦉@5 +13:5-18:6: @6[1]: _6 = const ()"> }⦉@4,6@5⦊⦉@5 loop { @@ -132,15 +187,20 @@ For revisions in Pull Requests (PR): { @10,12⦊break⦉@10,12 ; - } - @11,13⦊countdown - }@11,13⦊ + countdown + -= - 1⦉@11,13 ; - }@7⦊⦉@7 -}@10,12⦊⦉@10,12
+ } +}@10,12⦊⦉@10,12
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.simple_match/simple_match.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.simple_match/simple_match.main.-------.InstrumentCoverage.0.html index f1513d458eb..a8bae32490b 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.simple_match/simple_match.main.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.simple_match/simple_match.main.-------.InstrumentCoverage.0.html @@ -69,41 +69,83 @@ For revisions in Pull Requests (PR): -
fn main() { - // Initialize test constants in a way that cannot be determined at compile time, to ensure - // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from - // dependent conditions. - let @0,1,2,3⦊is_true = std::env::args().len() == 1; +9:9-9:22: @3[3]: FakeRead(ForLet, _5) +10:8-10:15: @3[6]: _7 = _1 +10:8-10:15: @3[7]: FakeRead(ForMatchedPlace, _7)">@0,1,2,3⦊fn main() { +9:9-9:22: @3[3]: FakeRead(ForLet, _5) +10:8-10:15: @3[6]: _7 = _1 +10:8-10:15: @3[7]: FakeRead(ForMatchedPlace, _7)"> // Initialize test constants in a way that cannot be determined at compile time, to ensure let mut countdown = 1⦉@0,1,2,3; - if @0,1,2,3⦊is_true⦉@0,1,2,3 @4,6⦊{ +9:9-9:22: @3[3]: FakeRead(ForLet, _5) +10:8-10:15: @3[6]: _7 = _1 +10:8-10:15: @3[7]: FakeRead(ForMatchedPlace, _7)"> // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from + // dependent conditions. + let is_true = std::env::args().len() == 1; + + let mut countdown = 1; + if is_true⦉@0,1,2,3 @4,6⦊{ countdown = 0; +10:16-12:6: @6[1]: _6 = const ()"> countdown = 0; }⦉@4,6@5⦊⦉@5 +10:16-12:6: @6[1]: _6 = const ()"> }⦉@4,6@5⦊⦉@5 for < 1⦉@13,15,17@19⦊⦉@19 +26:17-28:18: @17[5]: _25 = Lt(move _26, const 1_i32)"> 1⦉@13,15,17 => - @18⦊{ - z = countdown - ; - let y = countdown - ; - countdown = 10 - ; - }⦉@18 _ => - @16⦊{}⦉@16 + @16⦊{}⦉@16 } - }@7,8⦊⦉@7,8@20⦊⦉@20 -}@12⦊⦉@12
+ } +}@12⦊⦉@12
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.tight_inf_loop/tight_inf_loop.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.tight_inf_loop/tight_inf_loop.main.-------.InstrumentCoverage.0.html index 5cf76ecf5c2..d0ee798ca19 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.tight_inf_loop/tight_inf_loop.main.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.tight_inf_loop/tight_inf_loop.main.-------.InstrumentCoverage.0.html @@ -69,12 +69,15 @@ For revisions in Pull Requests (PR): -
fn main() { - if @0⦊false⦉@0 { +
@0⦊fn main() { + if false⦉@0 { @4,5⦊loop {}⦉@4,5@1,3⦊⦉@1,3 - } -}@2⦊⦉@2
+3:14-3:16: @5[0]: _3 = const ()">@4,5⦊loop {}⦉@4,5 + }@2⦊ +}⦉@2
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.try_error_result/try_error_result.call.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.try_error_result/try_error_result.call.-------.InstrumentCoverage.0.html index eeee81daeb2..804d2f43886 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.try_error_result/try_error_result.call.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.try_error_result/try_error_result.call.-------.InstrumentCoverage.0.html @@ -69,9 +69,10 @@ For revisions in Pull Requests (PR): -
fn call(return_error: bool) -> Result<(),()> { - if @0⦊return_error⦉@0 { +
@0⦊fn call(return_error: bool) -> Result<(),()> { + if return_error⦉@0 { @1,3⦊Err(())⦉@1,3 } else { diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.try_error_result/try_error_result.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.try_error_result/try_error_result.main.-------.InstrumentCoverage.0.html index b9391e26c86..3091eab3e71 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.try_error_result/try_error_result.main.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.try_error_result/try_error_result.main.-------.InstrumentCoverage.0.html @@ -69,9 +69,10 @@ For revisions in Pull Requests (PR): -
fn main() -> Result<(),()> { - let @0,1⦊mut +
@0,1⦊fn main() -> Result<(),()> { + let mut countdown = 10⦉@0,1 ; @@ -124,10 +125,10 @@ For revisions in Pull Requests (PR): @11,29,30⦊call(/*return_error=*/ false)⦉@11,29,30@32,34,35,36⦊?⦉@32,34,35,36; - }@23⦊⦉@23@31⦊⦉@31 - }@37⦊⦉@37 - } + } + @5⦊Ok(())⦉@5 -}@38⦊⦉@38@39⦊⦉@39
+}@39⦊⦉@39
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.while/while.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.while/while.main.-------.InstrumentCoverage.0.html index 05c010da7bc..f037a8ee5c5 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.while/while.main.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.while/while.main.-------.InstrumentCoverage.0.html @@ -69,9 +69,10 @@ For revisions in Pull Requests (PR): -
fn main() { - let @0⦊num = 9⦉@0; +
@0⦊fn main() { + let num = 9⦉@0; while @1,2⦊num >= 10⦉@1,2 @3,5⦊{ diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.while_early_ret/while_early_ret.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.while_early_ret/while_early_ret.main.-------.InstrumentCoverage.0.html index 87ce501ca8c..4cab153e77f 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.while_early_ret/while_early_ret.main.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.while_early_ret/while_early_ret.main.-------.InstrumentCoverage.0.html @@ -69,9 +69,10 @@ For revisions in Pull Requests (PR): -
fn main() -> Result<(),u8> { - let @0⦊mut countdown = 10⦉@0; +
@0⦊fn main() -> Result<(),u8> { + let mut countdown = 10⦉@0; while @10⦊Err(1)⦉@10 } ; - } - @7,12⦊countdown - }@7,12⦊ + countdown + -= - 1⦉@7,12 ; } @4⦊Ok(())⦉@4 -}@13⦊⦉@13@14⦊⦉@14
+}@14⦊⦉@14
diff --git a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.yield/yield.main-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.yield/yield.main-{closure#0}.-------.InstrumentCoverage.0.html index b8458f9d8d6..1e68c345f84 100644 --- a/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.yield/yield.main-{closure#0}.-------.InstrumentCoverage.0.html +++ b/src/test/run-make-fulldeps/coverage-spanview/expected_mir_dump.yield/yield.main-{closure#0}.-------.InstrumentCoverage.0.html @@ -69,8 +69,8 @@ For revisions in Pull Requests (PR): -
|| { - @0⦊yield 1⦉@0; +
|| @0⦊{ + yield 1⦉@0; return @1⦊"foo" || { - @0⦊yield 1⦉@0; +
|| @0⦊{ + yield 1⦉@0; @1⦊yield 2⦉@1; @2⦊yield 3⦉@2; return fn main() { +
@0,1,2⦊fn main() ⦉@0,1,2{ let @0,1,2⦊mut generator⦉@0,1,2 = || { yield 1; return "foo" diff --git a/src/test/run-make-fulldeps/coverage/abort.rs b/src/test/run-make-fulldeps/coverage/abort.rs index 01c5c920547..52c6ff333e4 100644 --- a/src/test/run-make-fulldeps/coverage/abort.rs +++ b/src/test/run-make-fulldeps/coverage/abort.rs @@ -11,12 +11,18 @@ fn might_abort(should_abort: bool) { } } -fn main() -> Result<(),u8> { +fn main() -> Result<(), u8> { let mut countdown = 10; while countdown > 0 { if countdown < 5 { might_abort(false); } + // See discussion (below the `Notes` section) on coverage results for the closing brace. + if countdown < 5 { might_abort(false); } // Counts for different regions on one line. + // For the following example, the closing brace is the last character on the line. + // This shows the character after the closing brace is highlighted, even if that next + // character is a newline. + if countdown < 5 { might_abort(false); } countdown -= 1; } Ok(()) @@ -32,3 +38,30 @@ fn main() -> Result<(),u8> { // intended"). Coverage results would show no executed coverage regions. // 6. If `should_abort` is `true` and the program aborts, the program exits with a `132` status // (on Linux at least). + +/* + +Expect the following coverage results: + +```text + 16| 11| while countdown > 0 { + 17| 10| if countdown < 5 { + 18| 4| might_abort(false); + 19| 6| } +``` + +This is actually correct. + +The condition `countdown < 5` executed 10 times (10 loop iterations). + +It evaluated to `true` 4 times, and executed the `might_abort()` call. + +It skipped the body of the `might_abort()` call 6 times. If an `if` does not include an explicit +`else`, the coverage implementation injects a counter, at the character immediately after the `if`s +closing brace, to count the "implicit" `else`. This is the only way to capture the coverage of the +non-true condition. + +As another example of why this is important, say the condition was `countdown < 50`, which is always +`true`. In that case, we wouldn't have a test for what happens if `might_abort()` is not called. +The closing brace would have a count of `0`, highlighting the missed coverage. +*/ diff --git a/src/test/run-make-fulldeps/coverage/async.rs b/src/test/run-make-fulldeps/coverage/async.rs index f69b8dce893..fcf6f76944e 100644 --- a/src/test/run-make-fulldeps/coverage/async.rs +++ b/src/test/run-make-fulldeps/coverage/async.rs @@ -2,37 +2,98 @@ // require-rust-edition-2018 +async fn c(x: u8) -> u8 { + if x == 8 { + 1 + } else { + 0 + } +} + +async fn d() -> u8 { 1 } + +async fn e() -> u8 { 1 } // unused function; executor does not block on `g()` + async fn f() -> u8 { 1 } -async fn foo() -> [bool; 10] { [false; 10] } +async fn foo() -> [bool; 10] { [false; 10] } // unused function; executor does not block on `h()` pub async fn g(x: u8) { match x { + y if e().await == y => (), y if f().await == y => (), _ => (), } } -// #78366: check the reference to the binding is recorded even if the binding is not autorefed - -async fn h(x: usize) { +async fn h(x: usize) { // The function signature is counted when called, but the body is not + // executed (not awaited) so the open brace has a `0` count (at least when + // displayed with `llvm-cov show` in color-mode). match x { y if foo().await[y] => (), _ => (), } } -async fn i(x: u8) { +async fn i(x: u8) { // line coverage is 1, but there are 2 regions: + // (a) the function signature, counted when the function is called; and + // (b) the open brace for the function body, counted once when the body is + // executed asynchronously. match x { + y if c(x).await == y + 1 => { d().await; } y if f().await == y + 1 => (), _ => (), } } +fn j(x: u8) { + // non-async versions of `c()`, `d()`, and `f()` to make it similar to async `i()`. + fn c(x: u8) -> u8 { + if x == 8 { + 1 // This line appears covered, but the 1-character expression span covering the `1` + // is not executed. (`llvm-cov show` displays a `^0` below the `1` ). This is because + // `fn j()` executes the open brace for the funciton body, followed by the function's + // first executable statement, `match x`. Inner function declarations are not + // "visible" to the MIR for `j()`, so the code region counts all lines between the + // open brace and the first statement as executed, which is, in a sense, true. + // `llvm-cov show` overcomes this kind of situation by showing the actual counts + // of the enclosed coverages, (that is, the `1` expression was not executed, and + // accurately displays a `0`). + } else { + 0 + } + } + fn d() -> u8 { 1 } + fn f() -> u8 { 1 } + match x { + y if c(x) == y + 1 => { d(); } + y if f() == y + 1 => (), + _ => (), + } +} + +fn k(x: u8) { // unused function + match x { + 1 => (), + 2 => (), + _ => (), + } +} + +fn l(x: u8) { + match x { + 1 => (), + 2 => (), + _ => (), + } +} + fn main() { let _ = g(10); let _ = h(9); let mut future = Box::pin(i(8)); + j(7); + l(6); executor::block_on(future.as_mut()); } diff --git a/src/test/run-make-fulldeps/coverage/closure.rs b/src/test/run-make-fulldeps/coverage/closure.rs index 66bbbc55399..914cb0fe051 100644 --- a/src/test/run-make-fulldeps/coverage/closure.rs +++ b/src/test/run-make-fulldeps/coverage/closure.rs @@ -90,4 +90,66 @@ fn main() { a ) ); + + let + quote_closure + = + |val| + { + let mut countdown = 0; + if is_false { + countdown = 10; + } + format!("'{}'", val) + }; + println!( + "Repeated, quoted string: {:?}" + , + std::iter::repeat("repeat me") + .take(5) + .map + ( + quote_closure + ) + .collect::>() + ); + + let + _unused_closure + = + | + mut countdown + | + { + if is_false { + countdown = 10; + } + "closure should be unused".to_owned() + }; + + let mut countdown = 10; + let _short_unused_closure = | _unused_arg: u8 | countdown += 1; + + // Macros can sometimes confuse the coverage results. Compare this next assignment, with an + // unused closure that invokes the `println!()` macro, with the closure assignment above, that + // does not use a macro. The closure above correctly shows `0` executions. + let _short_unused_closure = | _unused_arg: u8 | println!("not called"); + // The closure assignment above is executed, with a line count of `1`, but the `println!()` + // could not have been called, and yet, there is no indication that it wasn't... + + // ...but adding block braces gives the expected result, showing the block was not executed. + let _short_unused_closure_block = | _unused_arg: u8 | { println!("not called") }; + + let _shortish_unused_closure = | _unused_arg: u8 | { + println!("not called") + }; + + let _as_short_unused_closure = | + _unused_arg: u8 + | { println!("not called") }; + + let _almost_as_short_unused_closure = | + _unused_arg: u8 + | { println!("not called") } + ; } diff --git a/src/test/run-make-fulldeps/coverage/conditions.rs b/src/test/run-make-fulldeps/coverage/conditions.rs index 1a8bafa50d4..8a2a0b53e58 100644 --- a/src/test/run-make-fulldeps/coverage/conditions.rs +++ b/src/test/run-make-fulldeps/coverage/conditions.rs @@ -37,18 +37,6 @@ fn main() { } if true { - // Demonstrate the difference with `TerminatorKind::Assert` as of 2020-11-15. Assert is no - // longer treated as a `BasicCoverageBlock` terminator, which changed the coverage region, - // for the executed `then` block above, to include the closing brace on line 30. That - // changed the line count, but the coverage code region (for the `else if` condition) is - // still valid. - // - // Note that `if` (then) and `else` blocks include the closing brace in their coverage - // code regions when the last line in the block ends in a semicolon, because the Rust - // compiler inserts a `StatementKind::Assign` to assign `const ()` to a `Place`, for the - // empty value for the executed block. When the last line does not end in a semicolon - // (that is, when the block actually results in a value), the additional `Assign` is not - // generated, and the brace is not included. let mut countdown = 0; if true { countdown = 10; @@ -57,11 +45,6 @@ fn main() { if countdown > 7 { countdown -= 4; } - // The closing brace of the `then` branch is now included in the coverage region, and shown - // as "executed" (giving its line a count of 1 here). Since, in the original version above, - // the closing brace shares the same line as the `else if` conditional expression (which is - // not executed if the first `then` condition is true), only the condition's code region is - // marked with a count of 0 now. else if countdown > 2 { if countdown < 1 || countdown > 5 || countdown != 9 { countdown = 0; @@ -70,7 +53,8 @@ fn main() { } else { return; } - } + } // Note: closing brace shows uncovered (vs. `0` for implicit else) because condition literal + // `true` was const-evaluated. The compiler knows the `if` block will be executed. let mut countdown = 0; if true { diff --git a/src/test/run-make-fulldeps/coverage/coverage_tools.mk b/src/test/run-make-fulldeps/coverage/coverage_tools.mk index 867a3566ac3..7dc485cd94d 100644 --- a/src/test/run-make-fulldeps/coverage/coverage_tools.mk +++ b/src/test/run-make-fulldeps/coverage/coverage_tools.mk @@ -2,39 +2,16 @@ # file with the line: # # -include ../instrument-coverage/coverage_tools.mk -# -# To enable the Rust compiler option `-C link-dead-code`, also set the following variable -# *BEFORE* the `-include` line: -# -# LINK_DEAD_CODE=yes -include ../tools.mk -ifndef LINK_DEAD_CODE - LINK_DEAD_CODE=no -endif - # ISSUE(76038): When targeting MSVC, Rust binaries built with both `-Z instrument-coverage` and # `-C link-dead-code` typically crash (with a seg-fault) or at best generate an empty `*.profraw` # file, required for coverage reports. # -# Enabling `-C link-dead-code` is preferred when compiling with `-Z instrument-coverage`, so -# `-C link-dead-code` is automatically enabled for all platform targets _except_ MSVC. -# -# Making the state of `-C link-dead-code` platform-dependent creates a problem for cross-platform -# tests because the injected counters, coverage reports, and some low-level output can be different, -# depending on the `-C link-dead-code` setting. For example, coverage reports will not report any -# coverage for a dead code region when the `-C link-dead-code` option is disabled, but with the -# option enabled, those same regions will show coverage counter values (of zero, of course). -# -# To ensure cross-platform `-Z instrument-coverage` generate consistent output, the -# `-C link-dead-code` option is always explicitly enabled or disabled. -# -# Since tests that execute binaries enabled with both `-Z instrument-coverage` and -# `-C link-dead-code` are known to fail, those tests will need the `# ignore-msvc` setting. -# -# If and when the above issue is resolved, the `# ignore-msvc` option can be removed, and the -# tests can be simplified to always test with `-C link-dead-code`. +# Enabling `-C link-dead-code` is not necessary when compiling with `-Z instrument-coverage`, +# due to improvements in the coverage map generation, to add unreachable functions known to Rust. +# Therefore, `-C link-dead-code` is no longer automatically enabled. UNAME = $(shell uname) diff --git a/src/test/run-make-fulldeps/coverage/dead_code.rs b/src/test/run-make-fulldeps/coverage/dead_code.rs new file mode 100644 index 00000000000..a1285df0ec6 --- /dev/null +++ b/src/test/run-make-fulldeps/coverage/dead_code.rs @@ -0,0 +1,37 @@ +#![allow(unused_assignments, unused_variables)] + +pub fn unused_pub_fn_not_in_library() { + // Initialize test constants in a way that cannot be determined at compile time, to ensure + // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from + // dependent conditions. + let is_true = std::env::args().len() == 1; + + let mut countdown = 0; + if is_true { + countdown = 10; + } +} + +fn unused_fn() { + // Initialize test constants in a way that cannot be determined at compile time, to ensure + // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from + // dependent conditions. + let is_true = std::env::args().len() == 1; + + let mut countdown = 0; + if is_true { + countdown = 10; + } +} + +fn main() { + // Initialize test constants in a way that cannot be determined at compile time, to ensure + // rustc and LLVM cannot optimize out statements (or coverage counters) downstream from + // dependent conditions. + let is_true = std::env::args().len() == 1; + + let mut countdown = 0; + if is_true { + countdown = 10; + } +} diff --git a/src/test/run-make-fulldeps/coverage/generics.rs b/src/test/run-make-fulldeps/coverage/generics.rs index f4e64026944..cbeda35d3b8 100644 --- a/src/test/run-make-fulldeps/coverage/generics.rs +++ b/src/test/run-make-fulldeps/coverage/generics.rs @@ -30,7 +30,11 @@ fn main() -> Result<(),u8> { if true { println!("Exiting with error..."); return Err(1); - } + } // The remaining lines below have no coverage because `if true` (with the constant literal + // `true`) is guaranteed to execute the `then` block, which is also guaranteed to `return`. + // Thankfully, in the normal case, conditions are not guaranteed ahead of time, and as shown + // in other tests, the lines below would have coverage (which would show they had `0` + // executions, assuming the condition still evaluated to `true`). let _ = Firework { strength: 1000 }; diff --git a/src/test/run-make-fulldeps/coverage/panic_unwind.rs b/src/test/run-make-fulldeps/coverage/panic_unwind.rs index 02fa01ab962..b6c0c080762 100644 --- a/src/test/run-make-fulldeps/coverage/panic_unwind.rs +++ b/src/test/run-make-fulldeps/coverage/panic_unwind.rs @@ -10,7 +10,7 @@ fn might_panic(should_panic: bool) { } } -fn main() -> Result<(),u8> { +fn main() -> Result<(), u8> { let mut countdown = 10; while countdown > 0 { if countdown == 1 { @@ -42,8 +42,8 @@ fn main() -> Result<(),u8> { // 5. The reason the coverage results actually show `panic!()` was called is most likely because // `panic!()` is a macro, not a simple function call, and there are other `Statement`s and/or // `Terminator`s that execute with a coverage counter before the panic and unwind occur. -// 6. By best practice, programs should not panic. By design, the coverage implementation will not -// incur additional cost (in program size and execution time) to improve coverage results for -// an event that is not supposted to happen. +// 6. Since the common practice is not to use `panic!()` for error handling, the coverage +// implementation avoids incurring an additional cost (in program size and execution time) to +// improve coverage results for an event that is generally not "supposed" to happen. // 7. FIXME(#78544): This issue describes a feature request for a proposed option to enable // more accurate coverage results for tests that intentionally panic. diff --git a/src/test/run-make-fulldeps/coverage/partial_eq.rs b/src/test/run-make-fulldeps/coverage/partial_eq.rs index 334fb3364cc..547026f9502 100644 --- a/src/test/run-make-fulldeps/coverage/partial_eq.rs +++ b/src/test/run-make-fulldeps/coverage/partial_eq.rs @@ -4,8 +4,8 @@ #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] pub struct Version { major: usize, - minor: usize, - patch: usize, + minor: usize, // Count: 1 - `PartialOrd` compared `minor` values in 3.2.1 vs. 3.3.0 + patch: usize, // Count: 0 - `PartialOrd` was determined by `minor` (2 < 3) } impl Version { @@ -44,56 +44,3 @@ one expression, which is allowed, but the `function_source_hash` was only passed `function_source_hash` without a code region, if necessary. */ - -// FIXME(richkadel): It may be worth investigating why the coverage report for this test produces -// the following results: - -/* - -1. Why are their two counts below different characters (first and last) of `PartialOrd`, on line 17? - -2. Line 17 is counted twice, but the `::lt` instance shows a line count of 1? Is there a missing - line count with a different instance? Or was it really only called once? - -3. Line 20 shows another line count (of 1) for a line within a `struct` declaration (on only one of - its 3 fields). I doubt the specific field (`minor`) is relevant, but rather I suspect there's a - problem computing the file position here, for some reason. - - - 16| | - 17| 2|#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] - ^1 ^1 ------------------- -|Unexecuted instantiation: ::gt ------------------- -|Unexecuted instantiation: ::le ------------------- -|Unexecuted instantiation: ::ge ------------------- -|::lt: -| 17| 1|#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] ------------------- - 18| |pub struct Version { - 19| | major: usize, - 20| 1| minor: usize, - 21| | patch: usize, - 22| |} - 23| | - 24| |impl Version { - 25| | pub fn new(major: usize, minor: usize, patch: usize) -> Self { - 26| 2| Version { - 27| 2| major, - 28| 2| minor, - 29| 2| patch, - 30| 2| } - 31| 2| } - 32| |} - 33| | - 34| 1|fn main() { - 35| 1| let version_3_2_1 = Version::new(3, 2, 1); - 36| 1| let version_3_3_0 = Version::new(3, 3, 0); - 37| 1| - 38| 1| println!("{:?} < {:?} = {}", version_3_2_1, version_3_3_0, version_3_2_1 < version -_3_3_0); - 39| 1|} -*/ diff --git a/src/test/run-make-fulldeps/coverage/while_early_ret.rs b/src/test/run-make-fulldeps/coverage/while_early_ret.rs index 14ba36238d6..1fcea9c85c4 100644 --- a/src/test/run-make-fulldeps/coverage/while_early_ret.rs +++ b/src/test/run-make-fulldeps/coverage/while_early_ret.rs @@ -40,8 +40,3 @@ fn main() -> Result<(),u8> { // and MacOS. But on Windows (MSVC, at least), the call to `std::process::exit()` exits the program // without saving the InstrProf coverage counters. The use of `std::process:exit()` is not critical // to the coverage test for early returns, but this is a limitation that should be fixed. -// -// FIXME(richkadel): Consider creating a new tests for coverage when calling `std::process::exit()`, -// move the `ISSUE` comment to that test, and implement a new test directive that supports skipping -// coverage tests when targeting specific platforms (at least skipping Windows, or MSVC if the -// problem exists on MSVC only).