From: Jordan Rose Date: Mon, 7 Nov 2016 17:28:04 +0000 (+0000) Subject: Fix use-of-temporary with StringRef in code coverage X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f874c07d7169bc68a9dd312138598c3ccfc69c1d;p=clang 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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@286122 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CoverageMappingGen.cpp b/lib/CodeGen/CoverageMappingGen.cpp index 530ac83611..5bc9e5011a 100644 --- a/lib/CodeGen/CoverageMappingGen.cpp +++ b/lib/CodeGen/CoverageMappingGen.cpp @@ -1039,10 +1039,15 @@ void CoverageMappingModuleGen::addFunctionMappingRecord( std::vector Filenames; std::vector Expressions; std::vector Regions; + llvm::SmallVector FilenameStrs; llvm::SmallVector 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())