Eliminate unnecessary copy of FileName from GCOVLines.
authorDevang Patel <dpatel@apple.com>
Tue, 20 Sep 2011 17:43:14 +0000 (17:43 +0000)
committerDevang Patel <dpatel@apple.com>
Tue, 20 Sep 2011 17:43:14 +0000 (17:43 +0000)
GCOVLines is always accessed through a StringMap where the key is FileName.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140151 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Instrumentation/GCOVProfiling.cpp

index 16262932936a5b7b160f35bad19f65a8bf66c8bb..e701f995785b83fc21f887c628e80c63b6392d2a 100644 (file)
@@ -167,18 +167,17 @@ namespace {
     }
 
     uint32_t length() {
-      return lengthOfGCOVString(Filename) + 2 + Lines.size();
+      // FIXME: ??? What is the significance of 2 here ?
+      return 2 + Lines.size();
     }
 
    private:
     friend class GCOVBlock;
 
-    GCOVLines(std::string Filename, raw_ostream *os)
-        : Filename(Filename) {
+    GCOVLines(raw_ostream *os) {
       this->os = os;
     }
 
-    std::string Filename;
     SmallVector<uint32_t, 32> Lines;
   };
 
@@ -190,7 +189,7 @@ namespace {
     GCOVLines &getFile(std::string Filename) {
       GCOVLines *&Lines = LinesByFile[Filename];
       if (!Lines) {
-        Lines = new GCOVLines(Filename, os);
+        Lines = new GCOVLines(os);
       }
       return *Lines;
     }
@@ -203,7 +202,7 @@ namespace {
       uint32_t Len = 3;
       for (StringMap<GCOVLines *>::iterator I = LinesByFile.begin(),
                E = LinesByFile.end(); I != E; ++I) {
-        Len += I->second->length();
+        Len = Len + lengthOfGCOVString(I->first()) + I->second->length();
       }
 
       writeBytes(LinesTag, 4);
@@ -212,7 +211,7 @@ namespace {
       for (StringMap<GCOVLines *>::iterator I = LinesByFile.begin(),
                E = LinesByFile.end(); I != E; ++I) {
         write(0);
-        writeGCOVString(I->second->Filename);
+        writeGCOVString(I->first());
         for (int i = 0, e = I->second->Lines.size(); i != e; ++i) {
           write(I->second->Lines[i]);
         }