Skip to content

Commit 9ca4f49

Browse files
Revert "[TypeProf][InstrPGO] Introduce raw and instr profile format change for type profiling. (#81691)"
This reverts commit db7e9e6.
1 parent 5faf898 commit 9ca4f49

32 files changed

+89
-458
lines changed

compiler-rt/include/profile/InstrProfData.inc

+3-47
Original file line numberDiff line numberDiff line change
@@ -96,25 +96,6 @@ INSTR_PROF_DATA(const uint32_t, llvm::Type::getInt32Ty(Ctx), NumBitmapBytes, \
9696
#undef INSTR_PROF_DATA
9797
/* INSTR_PROF_DATA end. */
9898

99-
/* For a virtual table object, record the name hash to associate profiled
100-
* addresses with global variables, and record {starting address, size in bytes}
101-
* to map the profiled virtual table (which usually have an offset from the
102-
* starting address) back to a virtual table object. */
103-
#ifndef INSTR_PROF_VTABLE_DATA
104-
#define INSTR_PROF_VTABLE_DATA(Type, LLVMType, Name, Initializer)
105-
#else
106-
#define INSTR_PROF_VTABLE_DATA_DEFINED
107-
#endif
108-
INSTR_PROF_VTABLE_DATA(const uint64_t, llvm::Type::getInt64Ty(Ctx), \
109-
VTableNameHash, ConstantInt::get(llvm::Type::getInt64Ty(Ctx), \
110-
IndexedInstrProf::ComputeHash(PGOVTableName)))
111-
INSTR_PROF_VTABLE_DATA(const IntPtrT, llvm::PointerType::getUnqual(Ctx), \
112-
VTablePointer, VTableAddr)
113-
INSTR_PROF_VTABLE_DATA(const uint32_t, llvm::Type::getInt32Ty(Ctx), VTableSize, \
114-
ConstantInt::get(llvm::Type::getInt32Ty(Ctx), \
115-
VTableSizeVal))
116-
#undef INSTR_PROF_VTABLE_DATA
117-
/* INSTR_PROF_VTABLE_DATA end. */
11899

119100
/* This is an internal data structure used by value profiler. It
120101
* is defined here to allow serialization code sharing by LLVM
@@ -166,8 +147,6 @@ INSTR_PROF_RAW_HEADER(uint64_t, CountersDelta,
166147
INSTR_PROF_RAW_HEADER(uint64_t, BitmapDelta,
167148
(uintptr_t)BitmapBegin - (uintptr_t)DataBegin)
168149
INSTR_PROF_RAW_HEADER(uint64_t, NamesDelta, (uintptr_t)NamesBegin)
169-
INSTR_PROF_RAW_HEADER(uint64_t, NumVTables, NumVTables)
170-
INSTR_PROF_RAW_HEADER(uint64_t, VNamesSize, VNamesSize)
171150
INSTR_PROF_RAW_HEADER(uint64_t, ValueKindLast, IPVK_Last)
172151
#undef INSTR_PROF_RAW_HEADER
173152
/* INSTR_PROF_RAW_HEADER end */
@@ -209,26 +188,13 @@ VALUE_PROF_FUNC_PARAM(uint32_t, CounterIndex, Type::getInt32Ty(Ctx))
209188
VALUE_PROF_KIND(IPVK_IndirectCallTarget, 0, "indirect call target")
210189
/* For memory intrinsic functions size profiling. */
211190
VALUE_PROF_KIND(IPVK_MemOPSize, 1, "memory intrinsic functions size")
212-
/* For virtual table address profiling, the address point of the virtual table
213-
* (i.e., the address contained in objects pointing to a virtual table) are
214-
* profiled. Note this may not be the address of the per C++ class virtual table
215-
* object (e.g., there might be an offset).
216-
*
217-
* The profiled addresses are stored in raw profile, together with the following
218-
* two types of information.
219-
* 1. The (starting and ending) addresses of per C++ class virtual table objects.
220-
* 2. The (compressed) virtual table object names.
221-
* RawInstrProfReader converts profiled virtual table addresses to virtual table
222-
* objects' MD5 hash.
223-
*/
224-
VALUE_PROF_KIND(IPVK_VTableTarget, 2, "The profiled address point of the vtable")
225191
/* These two kinds must be the last to be
226192
* declared. This is to make sure the string
227193
* array created with the template can be
228194
* indexed with the kind value.
229195
*/
230196
VALUE_PROF_KIND(IPVK_First, IPVK_IndirectCallTarget, "first")
231-
VALUE_PROF_KIND(IPVK_Last, IPVK_VTableTarget, "last")
197+
VALUE_PROF_KIND(IPVK_Last, IPVK_MemOPSize, "last")
232198

233199
#undef VALUE_PROF_KIND
234200
/* VALUE_PROF_KIND end */
@@ -318,18 +284,12 @@ INSTR_PROF_SECT_ENTRY(IPSK_bitmap, \
318284
INSTR_PROF_SECT_ENTRY(IPSK_name, \
319285
INSTR_PROF_QUOTE(INSTR_PROF_NAME_COMMON), \
320286
INSTR_PROF_NAME_COFF, "__DATA,")
321-
INSTR_PROF_SECT_ENTRY(IPSK_vname, \
322-
INSTR_PROF_QUOTE(INSTR_PROF_VNAME_COMMON), \
323-
INSTR_PROF_VNAME_COFF, "__DATA,")
324287
INSTR_PROF_SECT_ENTRY(IPSK_vals, \
325288
INSTR_PROF_QUOTE(INSTR_PROF_VALS_COMMON), \
326289
INSTR_PROF_VALS_COFF, "__DATA,")
327290
INSTR_PROF_SECT_ENTRY(IPSK_vnodes, \
328291
INSTR_PROF_QUOTE(INSTR_PROF_VNODES_COMMON), \
329292
INSTR_PROF_VNODES_COFF, "__DATA,")
330-
INSTR_PROF_SECT_ENTRY(IPSK_vtab, \
331-
INSTR_PROF_QUOTE(INSTR_PROF_VTAB_COMMON), \
332-
INSTR_PROF_VTAB_COFF, "__DATA,")
333293
INSTR_PROF_SECT_ENTRY(IPSK_covmap, \
334294
INSTR_PROF_QUOTE(INSTR_PROF_COVMAP_COMMON), \
335295
INSTR_PROF_COVMAP_COFF, "__LLVM_COV,")
@@ -708,9 +668,9 @@ serializeValueProfDataFrom(ValueProfRecordClosure *Closure,
708668
(uint64_t)'f' << 16 | (uint64_t)'R' << 8 | (uint64_t)129
709669

710670
/* Raw profile format version (start from 1). */
711-
#define INSTR_PROF_RAW_VERSION 10
671+
#define INSTR_PROF_RAW_VERSION 9
712672
/* Indexed profile format version (start from 1). */
713-
#define INSTR_PROF_INDEX_VERSION 12
673+
#define INSTR_PROF_INDEX_VERSION 11
714674
/* Coverage mapping format version (start from 0). */
715675
#define INSTR_PROF_COVMAP_VERSION 6
716676

@@ -748,12 +708,10 @@ serializeValueProfDataFrom(ValueProfRecordClosure *Closure,
748708
than WIN32 */
749709
#define INSTR_PROF_DATA_COMMON __llvm_prf_data
750710
#define INSTR_PROF_NAME_COMMON __llvm_prf_names
751-
#define INSTR_PROF_VNAME_COMMON __llvm_prf_vtabnames
752711
#define INSTR_PROF_CNTS_COMMON __llvm_prf_cnts
753712
#define INSTR_PROF_BITS_COMMON __llvm_prf_bits
754713
#define INSTR_PROF_VALS_COMMON __llvm_prf_vals
755714
#define INSTR_PROF_VNODES_COMMON __llvm_prf_vnds
756-
#define INSTR_PROF_VTAB_COMMON __llvm_prf_vtab
757715
#define INSTR_PROF_COVMAP_COMMON __llvm_covmap
758716
#define INSTR_PROF_COVFUN_COMMON __llvm_covfun
759717
#define INSTR_PROF_COVDATA_COMMON __llvm_covdata
@@ -764,12 +722,10 @@ serializeValueProfDataFrom(ValueProfRecordClosure *Closure,
764722
*/
765723
#define INSTR_PROF_DATA_COFF ".lprfd$M"
766724
#define INSTR_PROF_NAME_COFF ".lprfn$M"
767-
#define INSTR_PROF_VNAME_COFF ".lprfvn$M"
768725
#define INSTR_PROF_CNTS_COFF ".lprfc$M"
769726
#define INSTR_PROF_BITS_COFF ".lprfb$M"
770727
#define INSTR_PROF_VALS_COFF ".lprfv$M"
771728
#define INSTR_PROF_VNODES_COFF ".lprfnd$M"
772-
#define INSTR_PROF_VTAB_COFF ".lprfvt$M"
773729
#define INSTR_PROF_COVMAP_COFF ".lcovmap$M"
774730
#define INSTR_PROF_COVFUN_COFF ".lcovfun$M"
775731
/* Since cov data and cov names sections are not allocated, we don't need to

compiler-rt/lib/profile/InstrProfiling.h

+7-28
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,6 @@ typedef struct ValueProfNode {
4949
#include "profile/InstrProfData.inc"
5050
} ValueProfNode;
5151

52-
typedef void *IntPtrT;
53-
typedef struct COMPILER_RT_ALIGNAS(INSTR_PROF_DATA_ALIGNMENT) VTableProfData {
54-
#define INSTR_PROF_VTABLE_DATA(Type, LLVMType, Name, Initializer) Type Name;
55-
#include "profile/InstrProfData.inc"
56-
} VTableProfData;
57-
5852
/*!
5953
* \brief Return 1 if profile counters are continuously synced to the raw
6054
* profile via an mmap(). This is in contrast to the default mode, in which
@@ -109,16 +103,12 @@ const __llvm_profile_data *__llvm_profile_begin_data(void);
109103
const __llvm_profile_data *__llvm_profile_end_data(void);
110104
const char *__llvm_profile_begin_names(void);
111105
const char *__llvm_profile_end_names(void);
112-
const char *__llvm_profile_begin_vtabnames(void);
113-
const char *__llvm_profile_end_vtabnames(void);
114106
char *__llvm_profile_begin_counters(void);
115107
char *__llvm_profile_end_counters(void);
116108
char *__llvm_profile_begin_bitmap(void);
117109
char *__llvm_profile_end_bitmap(void);
118110
ValueProfNode *__llvm_profile_begin_vnodes();
119111
ValueProfNode *__llvm_profile_end_vnodes();
120-
VTableProfData *__llvm_profile_begin_vtables();
121-
VTableProfData *__llvm_profile_end_vtables();
122112
uint32_t *__llvm_profile_begin_orderfile();
123113

124114
/*!
@@ -262,31 +252,20 @@ uint64_t __llvm_profile_get_num_bitmap_bytes(const char *Begin,
262252
/*! \brief Get the size of the profile name section in bytes. */
263253
uint64_t __llvm_profile_get_name_size(const char *Begin, const char *End);
264254

265-
/*! \brief Get the number of virtual table profile data entries */
266-
uint64_t __llvm_profile_get_num_vtable(const VTableProfData *Begin,
267-
const VTableProfData *End);
268-
269-
/*! \brief Get the size of virtual table profile data in bytes. */
270-
uint64_t __llvm_profile_get_vtable_section_size(const VTableProfData *Begin,
271-
const VTableProfData *End);
272-
273-
/* ! \brief Given the sizes of the data and counter information, computes the
274-
* number of padding bytes before and after the counter section, as well as the
275-
* number of padding bytes after other setions in the raw profile.
276-
* Returns -1 upon errors and 0 upon success. Output parameters should be used
277-
* iff return value is 0.
255+
/* ! \brief Given the sizes of the data and counter information, return the
256+
* number of padding bytes before and after the counters, and after the names,
257+
* in the raw profile.
278258
*
279259
* Note: When mmap() mode is disabled, no padding bytes before/after counters
280260
* are needed. However, in mmap() mode, the counter section in the raw profile
281261
* must be page-aligned: this API computes the number of padding bytes
282262
* needed to achieve that.
283263
*/
284-
int __llvm_profile_get_padding_sizes_for_counters(
264+
void __llvm_profile_get_padding_sizes_for_counters(
285265
uint64_t DataSize, uint64_t CountersSize, uint64_t NumBitmapBytes,
286-
uint64_t NamesSize, uint64_t VTableSize, uint64_t VNameSize,
287-
uint64_t *PaddingBytesBeforeCounters, uint64_t *PaddingBytesAfterCounters,
288-
uint64_t *PaddingBytesAfterBitmap, uint64_t *PaddingBytesAfterNames,
289-
uint64_t *PaddingBytesAfterVTable, uint64_t *PaddingBytesAfterVNames);
266+
uint64_t NamesSize, uint64_t *PaddingBytesBeforeCounters,
267+
uint64_t *PaddingBytesAfterCounters, uint64_t *PaddingBytesAfterBitmap,
268+
uint64_t *PaddingBytesAfterNames);
290269

291270
/*!
292271
* \brief Set the flag that profile data has been dumped to the file.

compiler-rt/lib/profile/InstrProfilingBuffer.c

+15-81
Original file line numberDiff line numberDiff line change
@@ -51,29 +51,16 @@ uint64_t __llvm_profile_get_size_for_buffer(void) {
5151
const char *BitmapEnd = __llvm_profile_end_bitmap();
5252
const char *NamesBegin = __llvm_profile_begin_names();
5353
const char *NamesEnd = __llvm_profile_end_names();
54-
const VTableProfData *VTableBegin = __llvm_profile_begin_vtables();
55-
const VTableProfData *VTableEnd = __llvm_profile_end_vtables();
56-
const char *VNamesBegin = __llvm_profile_begin_vtabnames();
57-
const char *VNamesEnd = __llvm_profile_end_vtabnames();
5854

5955
return __llvm_profile_get_size_for_buffer_internal(
6056
DataBegin, DataEnd, CountersBegin, CountersEnd, BitmapBegin, BitmapEnd,
61-
NamesBegin, NamesEnd, VTableBegin, VTableEnd, VNamesBegin, VNamesEnd);
57+
NamesBegin, NamesEnd);
6258
}
6359

6460
COMPILER_RT_VISIBILITY
6561
uint64_t __llvm_profile_get_num_data(const __llvm_profile_data *Begin,
6662
const __llvm_profile_data *End) {
6763
intptr_t BeginI = (intptr_t)Begin, EndI = (intptr_t)End;
68-
// `sizeof(__llvm_profile_data) - 1` is required in the numerator when
69-
// [Begin, End] represents an inclusive range.
70-
// For ELF, [Begin, End) represents the address of linker-inserted
71-
// symbols `__start__<elf-section>` and `__stop_<elf-section>`.
72-
// Thereby, `End` is one byte past the inclusive range, and
73-
// `sizeof(__llvm_profile_data) - 1` is not necessary in the numerator to get
74-
// the correct number of profile data.
75-
// FIXME: Consider removing `sizeof(__llvm_profile_data) - 1` if this is true
76-
// across platforms.
7764
return ((EndI + sizeof(__llvm_profile_data) - 1) - BeginI) /
7865
sizeof(__llvm_profile_data);
7966
}
@@ -84,26 +71,6 @@ uint64_t __llvm_profile_get_data_size(const __llvm_profile_data *Begin,
8471
return __llvm_profile_get_num_data(Begin, End) * sizeof(__llvm_profile_data);
8572
}
8673

87-
// Counts the number of `VTableProfData` elements within the range of [Begin,
88-
// End). Caller should guarantee that End points to one byte past the inclusive
89-
// range.
90-
// FIXME: Add a compiler-rt test to make sure the number of vtables in the
91-
// raw profile is the same as the number of vtable elements in the instrumented
92-
// binary.
93-
COMPILER_RT_VISIBILITY
94-
uint64_t __llvm_profile_get_num_vtable(const VTableProfData *Begin,
95-
const VTableProfData *End) {
96-
// Convert pointers to intptr_t to use integer arithmetic.
97-
intptr_t EndI = (intptr_t)End, BeginI = (intptr_t)Begin;
98-
return (EndI - BeginI) / sizeof(VTableProfData);
99-
}
100-
101-
COMPILER_RT_VISIBILITY
102-
uint64_t __llvm_profile_get_vtable_section_size(const VTableProfData *Begin,
103-
const VTableProfData *End) {
104-
return (intptr_t)(End) - (intptr_t)(Begin);
105-
}
106-
10774
COMPILER_RT_VISIBILITY size_t __llvm_profile_counter_entry_size(void) {
10875
if (__llvm_profile_get_version() & VARIANT_MASK_BYTE_COVERAGE)
10976
return sizeof(uint8_t);
@@ -152,33 +119,21 @@ static int needsCounterPadding(void) {
152119
}
153120

154121
COMPILER_RT_VISIBILITY
155-
int __llvm_profile_get_padding_sizes_for_counters(
122+
void __llvm_profile_get_padding_sizes_for_counters(
156123
uint64_t DataSize, uint64_t CountersSize, uint64_t NumBitmapBytes,
157-
uint64_t NamesSize, uint64_t VTableSize, uint64_t VNameSize,
158-
uint64_t *PaddingBytesBeforeCounters, uint64_t *PaddingBytesAfterCounters,
159-
uint64_t *PaddingBytesAfterBitmapBytes, uint64_t *PaddingBytesAfterNames,
160-
uint64_t *PaddingBytesAfterVTable, uint64_t *PaddingBytesAfterVName) {
161-
// Counter padding is needed only if continuous mode is enabled.
124+
uint64_t NamesSize, uint64_t *PaddingBytesBeforeCounters,
125+
uint64_t *PaddingBytesAfterCounters, uint64_t *PaddingBytesAfterBitmapBytes,
126+
uint64_t *PaddingBytesAfterNames) {
162127
if (!needsCounterPadding()) {
163128
*PaddingBytesBeforeCounters = 0;
164129
*PaddingBytesAfterCounters =
165130
__llvm_profile_get_num_padding_bytes(CountersSize);
166131
*PaddingBytesAfterBitmapBytes =
167132
__llvm_profile_get_num_padding_bytes(NumBitmapBytes);
168133
*PaddingBytesAfterNames = __llvm_profile_get_num_padding_bytes(NamesSize);
169-
if (PaddingBytesAfterVTable != NULL)
170-
*PaddingBytesAfterVTable =
171-
__llvm_profile_get_num_padding_bytes(VTableSize);
172-
if (PaddingBytesAfterVName != NULL)
173-
*PaddingBytesAfterVName = __llvm_profile_get_num_padding_bytes(VNameSize);
174-
return 0;
134+
return;
175135
}
176136

177-
// Value profiling not supported in continuous mode at profile-write time.
178-
// Return -1 to alert the incompatibility.
179-
if (VTableSize != 0 || VNameSize != 0)
180-
return -1;
181-
182137
// In continuous mode, the file offsets for headers and for the start of
183138
// counter sections need to be page-aligned.
184139
*PaddingBytesBeforeCounters =
@@ -187,52 +142,34 @@ int __llvm_profile_get_padding_sizes_for_counters(
187142
*PaddingBytesAfterBitmapBytes =
188143
calculateBytesNeededToPageAlign(NumBitmapBytes);
189144
*PaddingBytesAfterNames = calculateBytesNeededToPageAlign(NamesSize);
190-
// Set these two variables to zero to avoid uninitialized variables
191-
// even if VTableSize and VNameSize are known to be zero.
192-
if (PaddingBytesAfterVTable != NULL)
193-
*PaddingBytesAfterVTable = 0;
194-
if (PaddingBytesAfterVName != NULL)
195-
*PaddingBytesAfterVName = 0;
196-
return 0;
197145
}
198146

199147
COMPILER_RT_VISIBILITY
200148
uint64_t __llvm_profile_get_size_for_buffer_internal(
201149
const __llvm_profile_data *DataBegin, const __llvm_profile_data *DataEnd,
202150
const char *CountersBegin, const char *CountersEnd, const char *BitmapBegin,
203-
const char *BitmapEnd, const char *NamesBegin, const char *NamesEnd,
204-
const VTableProfData *VTableBegin, const VTableProfData *VTableEnd,
205-
const char *VNamesBegin, const char *VNamesEnd) {
151+
const char *BitmapEnd, const char *NamesBegin, const char *NamesEnd) {
206152
/* Match logic in __llvm_profile_write_buffer(). */
207153
const uint64_t NamesSize = (NamesEnd - NamesBegin) * sizeof(char);
208154
uint64_t DataSize = __llvm_profile_get_data_size(DataBegin, DataEnd);
209155
uint64_t CountersSize =
210156
__llvm_profile_get_counters_size(CountersBegin, CountersEnd);
211157
const uint64_t NumBitmapBytes =
212158
__llvm_profile_get_num_bitmap_bytes(BitmapBegin, BitmapEnd);
213-
const uint64_t VTableSize =
214-
__llvm_profile_get_vtable_section_size(VTableBegin, VTableEnd);
215-
const uint64_t VNameSize =
216-
__llvm_profile_get_name_size(VNamesBegin, VNamesEnd);
217159

218160
/* Determine how much padding is needed before/after the counters and after
219161
* the names. */
220162
uint64_t PaddingBytesBeforeCounters, PaddingBytesAfterCounters,
221-
PaddingBytesAfterNames, PaddingBytesAfterBitmapBytes,
222-
PaddingBytesAfterVTable, PaddingBytesAfterVNames;
163+
PaddingBytesAfterNames, PaddingBytesAfterBitmapBytes;
223164
__llvm_profile_get_padding_sizes_for_counters(
224-
DataSize, CountersSize, NumBitmapBytes, NamesSize, 0 /* VTableSize */,
225-
0 /* VNameSize */, &PaddingBytesBeforeCounters,
226-
&PaddingBytesAfterCounters, &PaddingBytesAfterBitmapBytes,
227-
&PaddingBytesAfterNames, &PaddingBytesAfterVTable,
228-
&PaddingBytesAfterVNames);
165+
DataSize, CountersSize, NumBitmapBytes, NamesSize,
166+
&PaddingBytesBeforeCounters, &PaddingBytesAfterCounters,
167+
&PaddingBytesAfterBitmapBytes, &PaddingBytesAfterNames);
229168

230169
return sizeof(__llvm_profile_header) + __llvm_write_binary_ids(NULL) +
231170
DataSize + PaddingBytesBeforeCounters + CountersSize +
232171
PaddingBytesAfterCounters + NumBitmapBytes +
233-
PaddingBytesAfterBitmapBytes + NamesSize + PaddingBytesAfterNames +
234-
VTableSize + PaddingBytesAfterVTable + VNameSize +
235-
PaddingBytesAfterVNames;
172+
PaddingBytesAfterBitmapBytes + NamesSize + PaddingBytesAfterNames;
236173
}
237174

238175
COMPILER_RT_VISIBILITY
@@ -254,10 +191,7 @@ COMPILER_RT_VISIBILITY int __llvm_profile_write_buffer_internal(
254191
const char *NamesBegin, const char *NamesEnd) {
255192
ProfDataWriter BufferWriter;
256193
initBufferWriter(&BufferWriter, Buffer);
257-
// Set virtual table arguments to NULL since they are not supported yet.
258-
return lprofWriteDataImpl(
259-
&BufferWriter, DataBegin, DataEnd, CountersBegin, CountersEnd,
260-
BitmapBegin, BitmapEnd, /*VPDataReader=*/0, NamesBegin, NamesEnd,
261-
/*VTableBegin=*/NULL, /*VTableEnd=*/NULL, /*VNamesBegin=*/NULL,
262-
/*VNamesEnd=*/NULL, /*SkipNameDataWrite=*/0);
194+
return lprofWriteDataImpl(&BufferWriter, DataBegin, DataEnd, CountersBegin,
195+
CountersEnd, BitmapBegin, BitmapEnd, 0, NamesBegin,
196+
NamesEnd, 0);
263197
}

compiler-rt/lib/profile/InstrProfilingInternal.h

+2-6
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,7 @@
2222
uint64_t __llvm_profile_get_size_for_buffer_internal(
2323
const __llvm_profile_data *DataBegin, const __llvm_profile_data *DataEnd,
2424
const char *CountersBegin, const char *CountersEnd, const char *BitmapBegin,
25-
const char *BitmapEnd, const char *NamesBegin, const char *NamesEnd,
26-
const VTableProfData *VTableBegin, const VTableProfData *VTableEnd,
27-
const char *VNamesBegin, const char *VNamesEnd);
25+
const char *BitmapEnd, const char *NamesBegin, const char *NamesEnd);
2826

2927
/*!
3028
* \brief Write instrumentation data to the given buffer, given explicit
@@ -158,9 +156,7 @@ int lprofWriteDataImpl(ProfDataWriter *Writer,
158156
const char *CountersBegin, const char *CountersEnd,
159157
const char *BitmapBegin, const char *BitmapEnd,
160158
VPDataReaderType *VPDataReader, const char *NamesBegin,
161-
const char *NamesEnd, const VTableProfData *VTableBegin,
162-
const VTableProfData *VTableEnd, const char *VNamesBegin,
163-
const char *VNamesEnd, int SkipNameDataWrite);
159+
const char *NamesEnd, int SkipNameDataWrite);
164160

165161
/* Merge value profile data pointed to by SrcValueProfData into
166162
* in-memory profile counters pointed by to DstData. */

0 commit comments

Comments
 (0)