@@ -135,14 +135,10 @@ template <> struct MappingTraits<TypeIdSummary> {
135135 }
136136};
137137
138- struct GlobalValueSummaryYaml {
139- // Commonly used fields
138+ struct FunctionSummaryYaml {
140139 unsigned Linkage, Visibility;
141140 bool NotEligibleToImport, Live, IsLocal, CanAutoHide;
142141 unsigned ImportType;
143- // Fields for AliasSummary
144- std::optional<uint64_t > Aliasee;
145- // Fields for FunctionSummary
146142 std::vector<uint64_t > Refs;
147143 std::vector<uint64_t > TypeTests;
148144 std::vector<FunctionSummary::VFuncId> TypeTestAssumeVCalls,
@@ -180,16 +176,15 @@ LLVM_YAML_IS_SEQUENCE_VECTOR(FunctionSummary::ConstVCall)
180176namespace llvm {
181177namespace yaml {
182178
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) {
185181 io.mapOptional (" Linkage" , summary.Linkage );
186182 io.mapOptional (" Visibility" , summary.Visibility );
187183 io.mapOptional (" NotEligibleToImport" , summary.NotEligibleToImport );
188184 io.mapOptional (" Live" , summary.Live );
189185 io.mapOptional (" Local" , summary.IsLocal );
190186 io.mapOptional (" CanAutoHide" , summary.CanAutoHide );
191187 io.mapOptional (" ImportType" , summary.ImportType );
192- io.mapOptional (" Aliasee" , summary.Aliasee );
193188 io.mapOptional (" Refs" , summary.Refs );
194189 io.mapOptional (" TypeTests" , summary.TypeTests );
195190 io.mapOptional (" TypeTestAssumeVCalls" , summary.TypeTestAssumeVCalls );
@@ -204,107 +199,69 @@ template <> struct MappingTraits<GlobalValueSummaryYaml> {
204199} // End yaml namespace
205200} // End llvm namespace
206201
207- LLVM_YAML_IS_SEQUENCE_VECTOR (GlobalValueSummaryYaml )
202+ LLVM_YAML_IS_SEQUENCE_VECTOR (FunctionSummaryYaml )
208203
209204namespace llvm {
210205namespace yaml {
211206
212207// FIXME: Add YAML mappings for the rest of the module summary.
213208template <> struct CustomMappingTraits <GlobalValueSummaryMapTy> {
214209 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 );
217212 uint64_t KeyInt;
218213 if (Key.getAsInteger (0 , KeyInt)) {
219214 io.setError (" key not an integer" );
220215 return ;
221216 }
222217 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) {
242219 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 ) {
245222 auto It = V.try_emplace (RefGUID, /* IsAnalysis=*/ false ).first ;
246223 Refs.push_back (ValueInfo (/* IsAnalysis=*/ false , &*It));
247224 }
248225 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 ),
255238 ArrayRef<FunctionSummary::ParamAccess>{}, ArrayRef<CallsiteInfo>{},
256239 ArrayRef<AllocInfo>{}));
257240 }
258241 }
259242 static void output (IO &io, GlobalValueSummaryMapTy &V) {
260243 for (auto &P : V) {
261- std::vector<GlobalValueSummaryYaml> GVSums ;
244+ std::vector<FunctionSummaryYaml> FSums ;
262245 for (auto &Sum : P.second .SummaryList ) {
263246 if (auto *FSum = dyn_cast<FunctionSummary>(Sum.get ())) {
264247 std::vector<uint64_t > Refs;
265248 Refs.reserve (FSum->refs ().size ());
266249 for (auto &VI : FSum->refs ())
267250 Refs.push_back (VI.getGUID ());
268- GVSums .push_back (GlobalValueSummaryYaml {
251+ FSums .push_back (FunctionSummaryYaml {
269252 FSum->flags ().Linkage , FSum->flags ().Visibility ,
270253 static_cast <bool >(FSum->flags ().NotEligibleToImport ),
271254 static_cast <bool >(FSum->flags ().Live ),
272255 static_cast <bool >(FSum->flags ().DSOLocal ),
273256 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 (),
277259 FSum->type_test_assume_const_vcalls (),
278260 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+ }
307262 }
263+ if (!FSums.empty ())
264+ io.mapRequired (llvm::utostr (P.first ).c_str (), FSums);
308265 }
309266 }
310267};
@@ -324,9 +281,6 @@ template <> struct CustomMappingTraits<TypeIdSummaryMapTy> {
324281template <> struct MappingTraits <ModuleSummaryIndex> {
325282 static void mapping (IO &io, ModuleSummaryIndex& index) {
326283 io.mapOptional (" GlobalValueMap" , index.GlobalValueMap );
327- if (!io.outputting ())
328- CustomMappingTraits<GlobalValueSummaryMapTy>::fixAliaseeLinks (
329- index.GlobalValueMap );
330284 io.mapOptional (" TypeIdMap" , index.TypeIdMap );
331285 io.mapOptional (" WithGlobalValueDeadStripping" ,
332286 index.WithGlobalValueDeadStripping );
0 commit comments