summaryrefslogtreecommitdiff
path: root/lib/Transforms/Instrumentation
diff options
context:
space:
mode:
authorNick Lewycky <nicholas@mxc.ca>2013-03-09 01:33:06 +0000
committerNick Lewycky <nicholas@mxc.ca>2013-03-09 01:33:06 +0000
commit17d2f776011cba33f7f5afb03c8066d35dbf8afc (patch)
tree5b8e64958b648d1c714174aebdc5bfe092b5ea2c /lib/Transforms/Instrumentation
parent24babfd2346a663fa694fcfe4eb69822268035c4 (diff)
downloadllvm-17d2f776011cba33f7f5afb03c8066d35dbf8afc.tar.gz
llvm-17d2f776011cba33f7f5afb03c8066d35dbf8afc.tar.bz2
llvm-17d2f776011cba33f7f5afb03c8066d35dbf8afc.tar.xz
Don't emit the extra checksum into the .gcda file if the user hasn't asked for
it. Fortunately, versions of gcov that predate the extra checksum also ignore any extra data, so this isn't a problem. There will be a matching commit in compiler-rt. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176745 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Instrumentation')
-rw-r--r--lib/Transforms/Instrumentation/GCOVProfiling.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/lib/Transforms/Instrumentation/GCOVProfiling.cpp b/lib/Transforms/Instrumentation/GCOVProfiling.cpp
index db1dd41283..c448caa15a 100644
--- a/lib/Transforms/Instrumentation/GCOVProfiling.cpp
+++ b/lib/Transforms/Instrumentation/GCOVProfiling.cpp
@@ -601,9 +601,10 @@ Constant *GCOVProfiler::getIncrementIndirectCounterFunc() {
}
Constant *GCOVProfiler::getEmitFunctionFunc() {
- Type *Args[2] = {
+ Type *Args[3] = {
Type::getInt32Ty(*Ctx), // uint32_t ident
Type::getInt8PtrTy(*Ctx), // const char *function_name
+ Type::getInt8Ty(*Ctx), // uint8_t use_extra_checksum
};
FunctionType *FTy = FunctionType::get(Type::getVoidTy(*Ctx), Args, false);
return M->getOrInsertFunction("llvm_gcda_emit_function", FTy);
@@ -668,12 +669,13 @@ void GCOVProfiler::insertCounterWriteout(
I = CountersBySP.begin(), E = CountersBySP.end();
I != E; ++I) {
DISubprogram SP(I->second);
- Builder.CreateCall2(EmitFunction,
+ Builder.CreateCall3(EmitFunction,
Builder.getInt32(i),
NoFunctionNamesInData ?
Constant::getNullValue(Builder.getInt8PtrTy()) :
- Builder.CreateGlobalStringPtr(SP.getName()));
-
+ Builder.CreateGlobalStringPtr(SP.getName()),
+ Builder.getInt8(UseExtraChecksum));
+
GlobalVariable *GV = I->first;
unsigned Arcs =
cast<ArrayType>(GV->getType()->getElementType())->getNumElements();