[llvm-cov] Get rid of all invalid filename references
authorVedant Kumar <vsk@apple.com>
Fri, 23 Sep 2016 18:57:32 +0000 (18:57 +0000)
committerVedant Kumar <vsk@apple.com>
Fri, 23 Sep 2016 18:57:32 +0000 (18:57 +0000)
commitbc6479850e1d4a4522c6d195f93704d3e78e54e3
treea62afdc088765fcce12312bec7d6ff6d785b044a
parent224ef8d73bb49c765ac8d7a352b244ec7c24807e
[llvm-cov] Get rid of all invalid filename references

We used to append filenames into a vector of std::string, and then
append a reference to each string into a separate vector. This made it
easier to work with the getUniqueSourceFiles API. But it's buggy.

std::string has a small-string optimization, so you can't expect to
capture a reference to one if you're copying it into a growing vector.
Add a test that triggers this invalid reference to std::string scenario,
and kill the issue with fire by just using ArrayRef<std::string>
everywhere.

llvm-svn: 282281
llvm/test/tools/llvm-cov/scan-directory.test
llvm/tools/llvm-cov/CodeCoverage.cpp
llvm/tools/llvm-cov/CoverageExporterJson.cpp
llvm/tools/llvm-cov/CoverageReport.cpp
llvm/tools/llvm-cov/CoverageReport.h
llvm/tools/llvm-cov/SourceCoverageView.h
llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp
llvm/tools/llvm-cov/SourceCoverageViewHTML.h
llvm/tools/llvm-cov/SourceCoverageViewText.cpp
llvm/tools/llvm-cov/SourceCoverageViewText.h