Eliminate unnecessary copy of FileName from GCOVLines. 
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
diff --git a/lib/Transforms/Instrumentation/GCOVProfiling.cpp b/lib/Transforms/Instrumentation/GCOVProfiling.cpp
index 1626293..e701f99 100644
--- a/lib/Transforms/Instrumentation/GCOVProfiling.cpp
+++ b/lib/Transforms/Instrumentation/GCOVProfiling.cpp
@@ -167,18 +167,17 @@
     }
 
     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 @@
     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 @@
       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 @@
       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]);
         }