diff options
author | Nick Lewycky <nicholas@mxc.ca> | 2011-05-04 20:46:58 +0000 |
---|---|---|
committer | Nick Lewycky <nicholas@mxc.ca> | 2011-05-04 20:46:58 +0000 |
commit | 480cb9918d0a16bc7869e0c6066699e870e50e83 (patch) | |
tree | 023ba67aeaf1dfca7b291ec948e263054eb74507 /clang/lib/CodeGen/CodeGenModule.cpp | |
parent | 63cc1de58d0b437887ac640f357cd76cfcca968a (diff) | |
download | bcm5719-llvm-480cb9918d0a16bc7869e0c6066699e870e50e83.tar.gz bcm5719-llvm-480cb9918d0a16bc7869e0c6066699e870e50e83.zip |
Record where the GCOV data files should be placed.
llvm-svn: 130866
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
-rw-r--r-- | clang/lib/CodeGen/CodeGenModule.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp index 83e927fcadb..22df86aca2d 100644 --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -132,6 +132,9 @@ void CodeGenModule::Release() { if (getCodeGenOpts().EmitDeclMetadata) EmitDeclMetadata(); + + if (getCodeGenOpts().EmitGcovArcs || getCodeGenOpts().EmitGcovNotes) + EmitCoverageDir(); } void CodeGenModule::UpdateCompletedType(const TagDecl *TD) { @@ -2216,6 +2219,23 @@ void CodeGenFunction::EmitDeclMetadata() { } } +void CodeGenModule::EmitCoverageDir() { + if (!getCodeGenOpts().CoverageDir.empty()) { + if (llvm::NamedMDNode *CUNode = TheModule.getNamedMetadata("llvm.dbg.cu")) { + llvm::NamedMDNode *GCov = TheModule.getOrInsertNamedMetadata("llvm.gcov"); + llvm::LLVMContext &Ctx = TheModule.getContext(); + llvm::MDString *CoverageDir = + llvm::MDString::get(Ctx, getCodeGenOpts().CoverageDir); + for (int i = 0, e = CUNode->getNumOperands(); i != e; ++i) { + llvm::MDNode *CU = CUNode->getOperand(i); + llvm::Value *node[] = { CoverageDir, CU }; + llvm::MDNode *N = llvm::MDNode::get(Ctx, node); + GCov->addOperand(N); + } + } + } +} + ///@name Custom Runtime Function Interfaces ///@{ // |