diff options
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/CodeGen/CodeGenModule.cpp | 2 | ||||
-rw-r--r-- | clang/test/CoverageMapping/decl.c | 15 |
2 files changed, 16 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp index f6bd6a4069b..e899c9442b2 100644 --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -3406,7 +3406,7 @@ void CodeGenModule::AddDeferredUnusedCoverageMapping(Decl *D) { case Decl::ObjCMethod: case Decl::CXXConstructor: case Decl::CXXDestructor: { - if (!cast<FunctionDecl>(D)->hasBody()) + if (!cast<FunctionDecl>(D)->doesThisDeclarationHaveABody()) return; auto I = DeferredEmptyCoverageMappingDecls.find(D); if (I == DeferredEmptyCoverageMappingDecls.end()) diff --git a/clang/test/CoverageMapping/decl.c b/clang/test/CoverageMapping/decl.c new file mode 100644 index 00000000000..96ee30357a8 --- /dev/null +++ b/clang/test/CoverageMapping/decl.c @@ -0,0 +1,15 @@ +// Ensure that declarations without definitions don't have maps emitted for them + +// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only %s > %t +// FileCheck -input-file %t %s +// RUN: FileCheck -check-prefix BAR -input-file %t %s + +// FOO: foo: +// FOO-NOT: foo: +inline int foo() { return 0; } +extern inline int foo(); + +// BAR: bar: +// BAR-NOT: bar: +int bar() { return 0; } +extern int bar(); |