r286122 - Fix use-of-temporary with StringRef in code coverage

Jordan Rose via cfe-commits cfe-commits at lists.llvm.org
Mon Nov 7 09:28:04 PST 2016


Author: jrose
Date: Mon Nov  7 11:28:04 2016
New Revision: 286122

URL: http://llvm.org/viewvc/llvm-project?rev=286122&view=rev
Log:
Fix use-of-temporary with StringRef in code coverage

The fixed code is basically identical to the same loop below, which
might indicate an opportunity for refactoring. I just wanted to fix
the use-of-temporary issue.

Caught by adding a similar check to StringRef as r283798 did for
ArrayRef. I'll be upstreaming that soon.

Reviewed by Vedant Kumar as https://reviews.llvm.org/D26317.

Modified:
    cfe/trunk/lib/CodeGen/CoverageMappingGen.cpp

Modified: cfe/trunk/lib/CodeGen/CoverageMappingGen.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CoverageMappingGen.cpp?rev=286122&r1=286121&r2=286122&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CoverageMappingGen.cpp (original)
+++ cfe/trunk/lib/CodeGen/CoverageMappingGen.cpp Mon Nov  7 11:28:04 2016
@@ -1039,10 +1039,15 @@ void CoverageMappingModuleGen::addFuncti
     std::vector<StringRef> Filenames;
     std::vector<CounterExpression> Expressions;
     std::vector<CounterMappingRegion> Regions;
+    llvm::SmallVector<std::string, 16> FilenameStrs;
     llvm::SmallVector<StringRef, 16> FilenameRefs;
+    FilenameStrs.resize(FileEntries.size());
     FilenameRefs.resize(FileEntries.size());
-    for (const auto &Entry : FileEntries)
-      FilenameRefs[Entry.second] = normalizeFilename(Entry.first->getName());
+    for (const auto &Entry : FileEntries) {
+      auto I = Entry.second;
+      FilenameStrs[I] = normalizeFilename(Entry.first->getName());
+      FilenameRefs[I] = FilenameStrs[I];
+    }
     RawCoverageMappingReader Reader(CoverageMapping, FilenameRefs, Filenames,
                                     Expressions, Regions);
     if (Reader.read())




More information about the cfe-commits mailing list