diff options
-rw-r--r-- | clang/lib/CodeGen/CodeGenPGO.cpp | 3 | ||||
-rw-r--r-- | clang/test/CoverageMapping/empty-destructor.cpp | 11 |
2 files changed, 14 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CodeGenPGO.cpp b/clang/lib/CodeGen/CodeGenPGO.cpp index 6acedc033a6..96fc1452293 100644 --- a/clang/lib/CodeGen/CodeGenPGO.cpp +++ b/clang/lib/CodeGen/CodeGenPGO.cpp @@ -669,6 +669,9 @@ bool CodeGenPGO::skipRegionMappingForDecl(const Decl *D) { if (SkipCoverageMapping) return true; + if (!D->getBody()) + return true; + // Don't map the functions in system headers. const auto &SM = CGM.getContext().getSourceManager(); auto Loc = D->getBody()->getLocStart(); diff --git a/clang/test/CoverageMapping/empty-destructor.cpp b/clang/test/CoverageMapping/empty-destructor.cpp new file mode 100644 index 00000000000..cfc29a75c6d --- /dev/null +++ b/clang/test/CoverageMapping/empty-destructor.cpp @@ -0,0 +1,11 @@ +// RUN: %clang_cc1 -triple i686-windows -emit-llvm-only -fcoverage-mapping -dump-coverage-mapping -fprofile-instrument=clang %s | FileCheck %s + +struct A { + virtual ~A(); +}; + +// CHECK: ?PR32761@@YAXXZ: +// CHECK-NEXT: File 0, [[@LINE+1]]:16 -> [[@LINE+3]]:2 = #0 +void PR32761() { + A a; +} |