diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2016-07-21 12:06:31 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2016-07-21 12:06:31 +0000 |
commit | 2a185a2547caccd5e969e2c5e704ee9733aaa2fc (patch) | |
tree | 6e2af70ead2cce6c128411c2400e1ac39a2360cd /llvm/lib | |
parent | 470172a4fd857f94aad93b5a2ab4d2ffd04eae05 (diff) | |
download | bcm5719-llvm-2a185a2547caccd5e969e2c5e704ee9733aaa2fc.tar.gz bcm5719-llvm-2a185a2547caccd5e969e2c5e704ee9733aaa2fc.zip |
[GCOV] Remove a layer of indirection.
StringMap is designed to hold large values. No functionality change
intended.
llvm-svn: 276265
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp | 28 |
1 files changed, 10 insertions, 18 deletions
diff --git a/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp b/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp index b4070b60276..32beab78684 100644 --- a/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp +++ b/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp @@ -251,11 +251,7 @@ namespace { class GCOVBlock : public GCOVRecord { public: GCOVLines &getFile(StringRef Filename) { - GCOVLines *&Lines = LinesByFile[Filename]; - if (!Lines) { - Lines = new GCOVLines(Filename, os); - } - return *Lines; + return LinesByFile.emplace_second(Filename, Filename, os).first->second; } void addEdge(GCOVBlock &Successor) { @@ -264,9 +260,9 @@ namespace { void writeOut() { uint32_t Len = 3; - SmallVector<StringMapEntry<GCOVLines *> *, 32> SortedLinesByFile; + SmallVector<StringMapEntry<GCOVLines> *, 32> SortedLinesByFile; for (auto &I : LinesByFile) { - Len += I.second->length(); + Len += I.second.length(); SortedLinesByFile.push_back(&I); } @@ -274,21 +270,17 @@ namespace { write(Len); write(Number); - std::sort(SortedLinesByFile.begin(), SortedLinesByFile.end(), - [](StringMapEntry<GCOVLines *> *LHS, - StringMapEntry<GCOVLines *> *RHS) { - return LHS->getKey() < RHS->getKey(); - }); + std::sort( + SortedLinesByFile.begin(), SortedLinesByFile.end(), + [](StringMapEntry<GCOVLines> *LHS, StringMapEntry<GCOVLines> *RHS) { + return LHS->getKey() < RHS->getKey(); + }); for (auto &I : SortedLinesByFile) - I->getValue()->writeOut(); + I->getValue().writeOut(); write(0); write(0); } - ~GCOVBlock() { - DeleteContainerSeconds(LinesByFile); - } - GCOVBlock(const GCOVBlock &RHS) : GCOVRecord(RHS), Number(RHS.Number) { // Only allow copy before edges and lines have been added. After that, // there are inter-block pointers (eg: edges) that won't take kindly to @@ -306,7 +298,7 @@ namespace { } uint32_t Number; - StringMap<GCOVLines *> LinesByFile; + StringMap<GCOVLines> LinesByFile; SmallVector<GCOVBlock *, 4> OutEdges; }; |