diff options
Diffstat (limited to 'llvm/tools/llvm-mca/include/SourceMgr.h')
-rw-r--r-- | llvm/tools/llvm-mca/include/SourceMgr.h | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/llvm/tools/llvm-mca/include/SourceMgr.h b/llvm/tools/llvm-mca/include/SourceMgr.h index 12713588246..54b1a2c31ce 100644 --- a/llvm/tools/llvm-mca/include/SourceMgr.h +++ b/llvm/tools/llvm-mca/include/SourceMgr.h @@ -17,35 +17,35 @@ #define LLVM_TOOLS_LLVM_MCA_SOURCEMGR_H #include "llvm/ADT/ArrayRef.h" -#include "llvm/MC/MCInst.h" -#include <vector> namespace mca { -typedef std::pair<unsigned, const llvm::MCInst &> SourceRef; +class Instruction; + +typedef std::pair<unsigned, const Instruction &> SourceRef; class SourceMgr { - llvm::ArrayRef<llvm::MCInst> Sequence; + using UniqueInst = std::unique_ptr<Instruction>; + llvm::ArrayRef<UniqueInst> Sequence; unsigned Current; const unsigned Iterations; static const unsigned DefaultIterations = 100; public: - SourceMgr(llvm::ArrayRef<llvm::MCInst> MCInstSequence, unsigned NumIterations) - : Sequence(MCInstSequence), Current(0), - Iterations(NumIterations ? NumIterations : DefaultIterations) {} + SourceMgr(llvm::ArrayRef<UniqueInst> S, unsigned Iter) + : Sequence(S), Current(0), Iterations(Iter ? Iter : DefaultIterations) {} unsigned getNumIterations() const { return Iterations; } unsigned size() const { return Sequence.size(); } bool hasNext() const { return Current < (Iterations * Sequence.size()); } void updateNext() { ++Current; } - const SourceRef peekNext() const { + SourceRef peekNext() const { assert(hasNext() && "Already at end of sequence!"); - return SourceRef(Current, Sequence[Current % Sequence.size()]); + return SourceRef(Current, *Sequence[Current % Sequence.size()]); } - using const_iterator = llvm::ArrayRef<llvm::MCInst>::const_iterator; + using const_iterator = llvm::ArrayRef<UniqueInst>::const_iterator; const_iterator begin() const { return Sequence.begin(); } const_iterator end() const { return Sequence.end(); } }; |