std::unique_ptr<InstrProfReaderIndexBase> Index;
/// Profile summary data.
std::unique_ptr<ProfileSummary> Summary;
+ // Index to the current record in the record array.
+ unsigned RecordIndex;
// Read the profile summary. Return a pointer pointing to one byte past the
// end of the summary data if it exists or the input \c Cur.
public:
IndexedInstrProfReader(std::unique_ptr<MemoryBuffer> DataBuffer)
- : DataBuffer(std::move(DataBuffer)) {}
+ : DataBuffer(std::move(DataBuffer)), RecordIndex(0) {}
IndexedInstrProfReader(const IndexedInstrProfReader &) = delete;
IndexedInstrProfReader &operator=(const IndexedInstrProfReader &) = delete;
}
Error IndexedInstrProfReader::readNextRecord(NamedInstrProfRecord &Record) {
- static unsigned RecordIndex = 0;
-
ArrayRef<NamedInstrProfRecord> Data;
Error E = Index->getRecords(Data);
--- /dev/null
+# IR level Instrumentation Flag
+:ir
+foo
+# Func Hash:
+36982789018
+# Num Counters:
+4
+# Counter Values:
+700000
+700000
+0
+0
+
+foo
+# Func Hash:
+59188585735
+# Num Counters:
+6
+# Counter Values:
+400000
+400000
+0
+0
+0
+0
+
+foo
+# Func Hash:
+27904764724
+# Num Counters:
+3
+# Counter Values:
+200000
+200000
+0
+
+foo
+# Func Hash:
+60466382370
+# Num Counters:
+6
+# Counter Values:
+0
+100000
+0
+0
+0
+0
+
+bar
+# Func Hash:
+12884901887
+# Num Counters:
+1
+# Counter Values:
+0
+
+foo2
+# Func Hash:
+12884901887
+# Num Counters:
+1
+# Counter Values:
+0
+
+foo3
+# Func Hash:
+12884901887
+# Num Counters:
+1
+# Counter Values:
+0
+
+foo4
+# Func Hash:
+12884901887
+# Num Counters:
+1
+# Counter Values:
+0
+
+foo5
+# Func Hash:
+12884901887
+# Num Counters:
+1
+# Counter Values:
+0
+
+foo1
+# Func Hash:
+12884901887
+# Num Counters:
+1
+# Counter Values:
+100000
+
+main
+# Func Hash:
+29212902728
+# Num Counters:
+2
+# Counter Values:
+1400000
+14
+
--- /dev/null
+Test multi-thread merge of multiple profdata files.
+
+RUN: llvm-profdata merge %p/Inputs/multiple-profdata-merge.proftext -o %t
+RUN: llvm-profdata merge -j 4 %t %t %t %t -o %t_2
+RUN: llvm-profdata show %t_2 | FileCheck %s
+
+; CHECK:Total functions: 11
+; CHECK:Maximum function count: 5600000
+; CHECK:Maximum internal block count: 2800000
+
+