Record where the GCOV data files should be placed.

llvm-svn: 130866
This commit is contained in:
Nick Lewycky
2011-05-04 20:46:58 +00:00
parent 63cc1de58d
commit 480cb9918d
6 changed files with 43 additions and 0 deletions

View File

@@ -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
///@{
//