Index: compiler-rt/test/asan/TestCases/asan_and_llvm_coverage_test.cpp =================================================================== --- compiler-rt/test/asan/TestCases/asan_and_llvm_coverage_test.cpp +++ compiler-rt/test/asan/TestCases/asan_and_llvm_coverage_test.cpp @@ -1,9 +1,6 @@ // RUN: %clangxx_asan -coverage -O0 %s -o %t // RUN: %env_asan_opts=check_initialization_order=1 %run %t 2>&1 | FileCheck %s -// We don't really support running tests using profile runtime on Windows. -// UNSUPPORTED: windows-msvc - #include int foo() { return 1; } int XXX = foo(); Index: llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp =================================================================== --- llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp +++ llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp @@ -713,7 +713,10 @@ // to have a counter for the function definition. uint32_t Line = SP->getLine(); auto Filename = getFilename(SP); - Func.getBlock(&EntryBlock).getFile(Filename).addLine(Line); + + // Artificial functions such as global initializers + if (!SP->isArtificial()) + Func.getBlock(&EntryBlock).getFile(Filename).addLine(Line); for (auto &BB : F) { GCOVBlock &Block = Func.getBlock(&BB);