@@ -135,14 +135,10 @@ template <> struct MappingTraits<TypeIdSummary> {
135
135
}
136
136
};
137
137
138
- struct GlobalValueSummaryYaml {
139
- // Commonly used fields
138
+ struct FunctionSummaryYaml {
140
139
unsigned Linkage, Visibility;
141
140
bool NotEligibleToImport, Live, IsLocal, CanAutoHide;
142
141
unsigned ImportType;
143
- // Fields for AliasSummary
144
- std::optional<uint64_t > Aliasee;
145
- // Fields for FunctionSummary
146
142
std::vector<uint64_t > Refs;
147
143
std::vector<uint64_t > TypeTests;
148
144
std::vector<FunctionSummary::VFuncId> TypeTestAssumeVCalls,
@@ -180,16 +176,15 @@ LLVM_YAML_IS_SEQUENCE_VECTOR(FunctionSummary::ConstVCall)
180
176
namespace llvm {
181
177
namespace yaml {
182
178
183
- template <> struct MappingTraits <GlobalValueSummaryYaml > {
184
- static void mapping (IO &io, GlobalValueSummaryYaml & summary) {
179
+ template <> struct MappingTraits <FunctionSummaryYaml > {
180
+ static void mapping (IO &io, FunctionSummaryYaml& summary) {
185
181
io.mapOptional (" Linkage" , summary.Linkage );
186
182
io.mapOptional (" Visibility" , summary.Visibility );
187
183
io.mapOptional (" NotEligibleToImport" , summary.NotEligibleToImport );
188
184
io.mapOptional (" Live" , summary.Live );
189
185
io.mapOptional (" Local" , summary.IsLocal );
190
186
io.mapOptional (" CanAutoHide" , summary.CanAutoHide );
191
187
io.mapOptional (" ImportType" , summary.ImportType );
192
- io.mapOptional (" Aliasee" , summary.Aliasee );
193
188
io.mapOptional (" Refs" , summary.Refs );
194
189
io.mapOptional (" TypeTests" , summary.TypeTests );
195
190
io.mapOptional (" TypeTestAssumeVCalls" , summary.TypeTestAssumeVCalls );
@@ -204,107 +199,69 @@ template <> struct MappingTraits<GlobalValueSummaryYaml> {
204
199
} // End yaml namespace
205
200
} // End llvm namespace
206
201
207
- LLVM_YAML_IS_SEQUENCE_VECTOR (GlobalValueSummaryYaml )
202
+ LLVM_YAML_IS_SEQUENCE_VECTOR (FunctionSummaryYaml )
208
203
209
204
namespace llvm {
210
205
namespace yaml {
211
206
212
207
// FIXME: Add YAML mappings for the rest of the module summary.
213
208
template <> struct CustomMappingTraits <GlobalValueSummaryMapTy> {
214
209
static void inputOne (IO &io, StringRef Key, GlobalValueSummaryMapTy &V) {
215
- std::vector<GlobalValueSummaryYaml> GVSums ;
216
- io.mapRequired (Key.str ().c_str (), GVSums );
210
+ std::vector<FunctionSummaryYaml> FSums ;
211
+ io.mapRequired (Key.str ().c_str (), FSums );
217
212
uint64_t KeyInt;
218
213
if (Key.getAsInteger (0 , KeyInt)) {
219
214
io.setError (" key not an integer" );
220
215
return ;
221
216
}
222
217
auto &Elem = V.try_emplace (KeyInt, /* IsAnalysis=*/ false ).first ->second ;
223
- for (auto &GVSum : GVSums) {
224
- GlobalValueSummary::GVFlags GVFlags (
225
- static_cast <GlobalValue::LinkageTypes>(GVSum.Linkage ),
226
- static_cast <GlobalValue::VisibilityTypes>(GVSum.Visibility ),
227
- GVSum.NotEligibleToImport , GVSum.Live , GVSum.IsLocal ,
228
- GVSum.CanAutoHide ,
229
- static_cast <GlobalValueSummary::ImportKind>(GVSum.ImportType ));
230
- if (GVSum.Aliasee ) {
231
- auto ASum = std::make_unique<AliasSummary>(GVFlags);
232
- if (!V.count (*GVSum.Aliasee ))
233
- V.emplace (*GVSum.Aliasee , /* IsAnalysis=*/ false );
234
- ValueInfo AliaseeVI (/* IsAnalysis=*/ false , &*V.find (*GVSum.Aliasee ));
235
- // Note: Aliasee cannot be filled until all summaries are loaded.
236
- // This is done in fixAliaseeLinks() which is called in
237
- // MappingTraits<ModuleSummaryIndex>::mapping().
238
- ASum->setAliasee (AliaseeVI, /* Aliasee=*/ nullptr );
239
- Elem.SummaryList .push_back (std::move (ASum));
240
- continue ;
241
- }
218
+ for (auto &FSum : FSums) {
242
219
SmallVector<ValueInfo, 0 > Refs;
243
- Refs.reserve (GVSum .Refs .size ());
244
- for (auto &RefGUID : GVSum .Refs ) {
220
+ Refs.reserve (FSum .Refs .size ());
221
+ for (auto &RefGUID : FSum .Refs ) {
245
222
auto It = V.try_emplace (RefGUID, /* IsAnalysis=*/ false ).first ;
246
223
Refs.push_back (ValueInfo (/* IsAnalysis=*/ false , &*It));
247
224
}
248
225
Elem.SummaryList .push_back (std::make_unique<FunctionSummary>(
249
- GVFlags, /* NumInsts=*/ 0 , FunctionSummary::FFlags{}, std::move (Refs),
250
- SmallVector<FunctionSummary::EdgeTy, 0 >{}, std::move (GVSum.TypeTests ),
251
- std::move (GVSum.TypeTestAssumeVCalls ),
252
- std::move (GVSum.TypeCheckedLoadVCalls ),
253
- std::move (GVSum.TypeTestAssumeConstVCalls ),
254
- std::move (GVSum.TypeCheckedLoadConstVCalls ),
226
+ GlobalValueSummary::GVFlags (
227
+ static_cast <GlobalValue::LinkageTypes>(FSum.Linkage ),
228
+ static_cast <GlobalValue::VisibilityTypes>(FSum.Visibility ),
229
+ FSum.NotEligibleToImport , FSum.Live , FSum.IsLocal ,
230
+ FSum.CanAutoHide ,
231
+ static_cast <GlobalValueSummary::ImportKind>(FSum.ImportType )),
232
+ /* NumInsts=*/ 0 , FunctionSummary::FFlags{}, std::move (Refs),
233
+ SmallVector<FunctionSummary::EdgeTy, 0 >{}, std::move (FSum.TypeTests ),
234
+ std::move (FSum.TypeTestAssumeVCalls ),
235
+ std::move (FSum.TypeCheckedLoadVCalls ),
236
+ std::move (FSum.TypeTestAssumeConstVCalls ),
237
+ std::move (FSum.TypeCheckedLoadConstVCalls ),
255
238
ArrayRef<FunctionSummary::ParamAccess>{}, ArrayRef<CallsiteInfo>{},
256
239
ArrayRef<AllocInfo>{}));
257
240
}
258
241
}
259
242
static void output (IO &io, GlobalValueSummaryMapTy &V) {
260
243
for (auto &P : V) {
261
- std::vector<GlobalValueSummaryYaml> GVSums ;
244
+ std::vector<FunctionSummaryYaml> FSums ;
262
245
for (auto &Sum : P.second .SummaryList ) {
263
246
if (auto *FSum = dyn_cast<FunctionSummary>(Sum.get ())) {
264
247
std::vector<uint64_t > Refs;
265
248
Refs.reserve (FSum->refs ().size ());
266
249
for (auto &VI : FSum->refs ())
267
250
Refs.push_back (VI.getGUID ());
268
- GVSums .push_back (GlobalValueSummaryYaml {
251
+ FSums .push_back (FunctionSummaryYaml {
269
252
FSum->flags ().Linkage , FSum->flags ().Visibility ,
270
253
static_cast <bool >(FSum->flags ().NotEligibleToImport ),
271
254
static_cast <bool >(FSum->flags ().Live ),
272
255
static_cast <bool >(FSum->flags ().DSOLocal ),
273
256
static_cast <bool >(FSum->flags ().CanAutoHide ),
274
- FSum->flags ().ImportType , /* Aliasee=*/ std::nullopt, Refs,
275
- FSum->type_tests (), FSum->type_test_assume_vcalls (),
276
- FSum->type_checked_load_vcalls (),
257
+ FSum->flags ().ImportType , Refs, FSum->type_tests (),
258
+ FSum->type_test_assume_vcalls (), FSum->type_checked_load_vcalls (),
277
259
FSum->type_test_assume_const_vcalls (),
278
260
FSum->type_checked_load_const_vcalls ()});
279
- } else if (auto *ASum = dyn_cast<AliasSummary>(Sum.get ());
280
- ASum && ASum->hasAliasee ()) {
281
- GVSums.push_back (GlobalValueSummaryYaml{
282
- ASum->flags ().Linkage , ASum->flags ().Visibility ,
283
- static_cast <bool >(ASum->flags ().NotEligibleToImport ),
284
- static_cast <bool >(ASum->flags ().Live ),
285
- static_cast <bool >(ASum->flags ().DSOLocal ),
286
- static_cast <bool >(ASum->flags ().CanAutoHide ),
287
- ASum->flags ().ImportType ,
288
- /* Aliasee=*/ ASum->getAliaseeGUID ()});
289
- }
290
- }
291
- if (!GVSums.empty ())
292
- io.mapRequired (llvm::utostr (P.first ).c_str (), GVSums);
293
- }
294
- }
295
- static void fixAliaseeLinks (GlobalValueSummaryMapTy &V) {
296
- for (auto &P : V) {
297
- for (auto &Sum : P.second .SummaryList ) {
298
- if (auto *Alias = dyn_cast<AliasSummary>(Sum.get ())) {
299
- ValueInfo AliaseeVI = Alias->getAliaseeVI ();
300
- auto AliaseeSL = AliaseeVI.getSummaryList ();
301
- if (AliaseeSL.empty ()) {
302
- ValueInfo EmptyVI;
303
- Alias->setAliasee (EmptyVI, nullptr );
304
- } else
305
- Alias->setAliasee (AliaseeVI, AliaseeSL[0 ].get ());
306
- }
261
+ }
307
262
}
263
+ if (!FSums.empty ())
264
+ io.mapRequired (llvm::utostr (P.first ).c_str (), FSums);
308
265
}
309
266
}
310
267
};
@@ -324,9 +281,6 @@ template <> struct CustomMappingTraits<TypeIdSummaryMapTy> {
324
281
template <> struct MappingTraits <ModuleSummaryIndex> {
325
282
static void mapping (IO &io, ModuleSummaryIndex& index) {
326
283
io.mapOptional (" GlobalValueMap" , index.GlobalValueMap );
327
- if (!io.outputting ())
328
- CustomMappingTraits<GlobalValueSummaryMapTy>::fixAliaseeLinks (
329
- index.GlobalValueMap );
330
284
io.mapOptional (" TypeIdMap" , index.TypeIdMap );
331
285
io.mapOptional (" WithGlobalValueDeadStripping" ,
332
286
index.WithGlobalValueDeadStripping );
0 commit comments