diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2017-04-16 16:25:46 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2017-04-16 16:25:46 +0000 | 
| commit | 7a7e6055035bfd93ab507051819373a6f171258b (patch) | |
| tree | dc9ac22b4fea4f445748feaf7232a146623f0dfa /contrib/llvm/lib/ProfileData/Coverage/CoverageMappingWriter.cpp | |
| parent | b96a714f453e7f5aeeb3c2df2c3e1e8ad749f96f (diff) | |
| parent | 71d5a2540a98c81f5bcaeb48805e0e2881f530ef (diff) | |
Notes
Diffstat (limited to 'contrib/llvm/lib/ProfileData/Coverage/CoverageMappingWriter.cpp')
| -rw-r--r-- | contrib/llvm/lib/ProfileData/Coverage/CoverageMappingWriter.cpp | 35 | 
1 files changed, 22 insertions, 13 deletions
| diff --git a/contrib/llvm/lib/ProfileData/Coverage/CoverageMappingWriter.cpp b/contrib/llvm/lib/ProfileData/Coverage/CoverageMappingWriter.cpp index 82356333b937..f131be2cba49 100644 --- a/contrib/llvm/lib/ProfileData/Coverage/CoverageMappingWriter.cpp +++ b/contrib/llvm/lib/ProfileData/Coverage/CoverageMappingWriter.cpp @@ -1,4 +1,4 @@ -//=-- CoverageMappingWriter.cpp - Code coverage mapping writer -------------=// +//===- CoverageMappingWriter.cpp - Code coverage mapping writer -----------===//  //  //                     The LLVM Compiler Infrastructure  // @@ -12,8 +12,15 @@  //  //===----------------------------------------------------------------------===// +#include "llvm/ADT/ArrayRef.h" +#include "llvm/ADT/SmallVector.h"  #include "llvm/ProfileData/Coverage/CoverageMappingWriter.h"  #include "llvm/Support/LEB128.h" +#include "llvm/Support/raw_ostream.h" +#include <algorithm> +#include <cassert> +#include <limits> +#include <vector>  using namespace llvm;  using namespace coverage; @@ -27,14 +34,25 @@ void CoverageFilenamesSectionWriter::write(raw_ostream &OS) {  }  namespace { +  /// \brief Gather only the expressions that are used by the mapping  /// regions in this function.  class CounterExpressionsMinimizer {    ArrayRef<CounterExpression> Expressions; -  llvm::SmallVector<CounterExpression, 16> UsedExpressions; +  SmallVector<CounterExpression, 16> UsedExpressions;    std::vector<unsigned> AdjustedExpressionIDs;  public: +  CounterExpressionsMinimizer(ArrayRef<CounterExpression> Expressions, +                              ArrayRef<CounterMappingRegion> MappingRegions) +      : Expressions(Expressions) { +    AdjustedExpressionIDs.resize(Expressions.size(), 0); +    for (const auto &I : MappingRegions) +      mark(I.Count); +    for (const auto &I : MappingRegions) +      gatherUsed(I.Count); +  } +    void mark(Counter C) {      if (!C.isExpression())        return; @@ -54,16 +72,6 @@ public:      gatherUsed(E.RHS);    } -  CounterExpressionsMinimizer(ArrayRef<CounterExpression> Expressions, -                              ArrayRef<CounterMappingRegion> MappingRegions) -      : Expressions(Expressions) { -    AdjustedExpressionIDs.resize(Expressions.size(), 0); -    for (const auto &I : MappingRegions) -      mark(I.Count); -    for (const auto &I : MappingRegions) -      gatherUsed(I.Count); -  } -    ArrayRef<CounterExpression> getExpressions() const { return UsedExpressions; }    /// \brief Adjust the given counter to correctly transition from the old @@ -74,7 +82,8 @@ public:      return C;    }  }; -} + +} // end anonymous namespace  /// \brief Encode the counter.  /// | 
