aboutsummaryrefslogtreecommitdiff
path: root/lib/Transforms/Instrumentation/GCOVProfiling.cpp
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2012-09-13 14:32:30 +0000
committerBill Wendling <isanbard@gmail.com>2012-09-13 14:32:30 +0000
commit032dbee2a9d401ee05beb648465f21168e279bda (patch)
treedd2df4301c618f71f1f328796748450a40556d9d /lib/Transforms/Instrumentation/GCOVProfiling.cpp
parent0cd19b93017fcaba737b15ea4da39c460feb5670 (diff)
Use Nick's suggestion of storing a large NULL into the GV instead of memset, which requires TargetData.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163799 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Instrumentation/GCOVProfiling.cpp')
-rw-r--r--lib/Transforms/Instrumentation/GCOVProfiling.cpp28
1 files changed, 10 insertions, 18 deletions
diff --git a/lib/Transforms/Instrumentation/GCOVProfiling.cpp b/lib/Transforms/Instrumentation/GCOVProfiling.cpp
index 197a329feb..5d4a1b30f5 100644
--- a/lib/Transforms/Instrumentation/GCOVProfiling.cpp
+++ b/lib/Transforms/Instrumentation/GCOVProfiling.cpp
@@ -34,7 +34,6 @@
#include "llvm/Support/InstIterator.h"
#include "llvm/Support/PathV2.h"
#include "llvm/Support/raw_ostream.h"
-#include "llvm/Target/TargetData.h"
#include "llvm/Transforms/Utils/ModuleUtils.h"
#include <string>
#include <utility>
@@ -102,7 +101,6 @@ namespace {
Module *M;
LLVMContext *Ctx;
- const TargetData *TD;
};
}
@@ -354,7 +352,6 @@ std::string GCOVProfiler::mangleName(DICompileUnit CU, const char *NewStem) {
bool GCOVProfiler::runOnModule(Module &M) {
this->M = &M;
- TD = getAnalysisIfAvailable<TargetData>();
Ctx = &M.getContext();
if (EmitNotes) emitGCNO();
@@ -653,8 +650,8 @@ void GCOVProfiler::insertCounterWriteout(
NamedMDNode *CU_Nodes = M->getNamedMetadata("llvm.dbg.cu");
if (CU_Nodes) {
for (unsigned i = 0, e = CU_Nodes->getNumOperands(); i != e; ++i) {
- DICompileUnit compile_unit(CU_Nodes->getOperand(i));
- std::string FilenameGcda = mangleName(compile_unit, "gcda");
+ DICompileUnit CU(CU_Nodes->getOperand(i));
+ std::string FilenameGcda = mangleName(CU, "gcda");
Builder.CreateCall(StartFile,
Builder.CreateGlobalStringPtr(FilenameGcda));
for (ArrayRef<std::pair<GlobalVariable *, MDNode *> >::iterator
@@ -762,8 +759,6 @@ insertFlush(ArrayRef<std::pair<GlobalVariable*, MDNode*> > CountersBySP) {
FlushF->setLinkage(GlobalValue::InternalLinkage);
FlushF->setUnnamedAddr(true);
- Type *Int8Ty = Type::getInt8Ty(*Ctx);
- Type *Int64Ty = Type::getInt64Ty(*Ctx);
BasicBlock *Entry = BasicBlock::Create(*Ctx, "entry", FlushF);
// Write out the current counters.
@@ -773,17 +768,14 @@ insertFlush(ArrayRef<std::pair<GlobalVariable*, MDNode*> > CountersBySP) {
IRBuilder<> Builder(Entry);
Builder.CreateCall(WriteoutF);
- if (TD)
- // Zero out the counters.
- for (ArrayRef<std::pair<GlobalVariable *, MDNode *> >::iterator
- I = CountersBySP.begin(), E = CountersBySP.end();
- I != E; ++I) {
- GlobalVariable *GV = I->first;
- uint64_t NumBytes = TD->getTypeAllocSize(GV->getType()->getElementType());
- Builder.CreateMemSet(Builder.CreateConstGEP2_64(GV, 0, 0),
- ConstantInt::get(Int8Ty, 0),
- ConstantInt::get(Int64Ty, NumBytes), false);
- }
+ // Zero out the counters.
+ for (ArrayRef<std::pair<GlobalVariable *, MDNode *> >::iterator
+ I = CountersBySP.begin(), E = CountersBySP.end();
+ I != E; ++I) {
+ GlobalVariable *GV = I->first;
+ Constant *Null = Constant::getNullValue(GV->getType()->getElementType());
+ Builder.CreateStore(Null, GV);//Builder.CreateConstGEP2_64(GV, 0, 0));
+ }
Type *RetTy = FlushF->getReturnType();
if (RetTy == Type::getVoidTy(*Ctx))