diff --git a/src/codegen.cpp b/src/codegen.cpp index c91e70b5e508e..717e58a2580b2 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -8515,7 +8515,7 @@ static jl_llvm_functions_t current_lineinfo.resize(new_lineinfo.size(), 0); for (dbg = 0; dbg < new_lineinfo.size(); dbg++) { unsigned newdbg = new_lineinfo[new_lineinfo.size() - dbg - 1]; - if (newdbg != current_lineinfo[dbg]) { + if (newdbg != current_lineinfo[dbg] || dbg + 1 == new_lineinfo.size()) { current_lineinfo[dbg] = newdbg; const auto &info = linetable[newdbg]; if (do_coverage(info.is_user_code, info.is_tracked)) @@ -8605,14 +8605,15 @@ static jl_llvm_functions_t find_next_stmt(0); while (cursor != -1) { + ctx.noalias().aliasscope.current = aliasscopes[cursor]; + jl_value_t *stmt = jl_array_ptr_ref(stmts, cursor); int32_t debuginfoloc = jl_array_data(src->codelocs, int32_t)[cursor]; if (debuginfoloc > 0) { if (debug_enabled) ctx.builder.SetCurrentDebugLocation(linetable[debuginfoloc].loc); - coverageVisitStmt(debuginfoloc); + if (jl_is_expr(stmt) && ((jl_expr_t*)stmt)->head == jl_coverageeffect_sym) + coverageVisitStmt(debuginfoloc); } - ctx.noalias().aliasscope.current = aliasscopes[cursor]; - jl_value_t *stmt = jl_array_ptr_ref(stmts, cursor); if (jl_is_returnnode(stmt)) { jl_value_t *retexpr = jl_returnnode_value(stmt); if (retexpr == NULL) { diff --git a/test/testhelpers/coverage_file.info b/test/testhelpers/coverage_file.info index c83e75dee8060..82be8326ff0ae 100644 --- a/test/testhelpers/coverage_file.info +++ b/test/testhelpers/coverage_file.info @@ -5,7 +5,7 @@ DA:5,0 DA:7,1 DA:8,1 DA:9,3 -DA:10,5 +DA:10,3 DA:11,1 DA:12,1 DA:14,0 diff --git a/test/testhelpers/coverage_file.info.bad b/test/testhelpers/coverage_file.info.bad index 311f6379381ee..156e0599ed0f3 100644 --- a/test/testhelpers/coverage_file.info.bad +++ b/test/testhelpers/coverage_file.info.bad @@ -5,7 +5,7 @@ DA:5,0 DA:7,1 DA:8,1 DA:9,3 -DA:10,5 +DA:10,3 DA:11,1 DA:12,1 DA:14,0 diff --git a/test/testhelpers/coverage_file.info.bad2 b/test/testhelpers/coverage_file.info.bad2 deleted file mode 100644 index a766597be4c17..0000000000000 --- a/test/testhelpers/coverage_file.info.bad2 +++ /dev/null @@ -1,20 +0,0 @@ -SF: -DA:3,1 -DA:4,1 -DA:5,0 -DA:7,1 -DA:8,1 -DA:9,3 -DA:10,5 -DA:11,0 -DA:12,1 -DA:14,0 -DA:17,1 -DA:18,0 -DA:19,0 -DA:20,0 -DA:22,1 -DA:1234,0 -LH:9 -LF:16 -end_of_record