@@ -3275,24 +3275,20 @@ void RecordKeeper::stopBackendTimer() {
3275
3275
}
3276
3276
}
3277
3277
3278
- template <typename VecTy>
3279
- const VecTy &RecordKeeper::getAllDerivedDefinitionsImpl (
3280
- StringRef ClassName, std::map<std::string, VecTy> &Cache) const {
3278
+ ArrayRef<const Record *>
3279
+ RecordKeeper::getAllDerivedDefinitions (StringRef ClassName) const {
3281
3280
// We cache the record vectors for single classes. Many backends request
3282
3281
// the same vectors multiple times.
3283
- auto Pair = Cache.try_emplace (ClassName.str ());
3284
- if (Pair.second )
3285
- Pair.first ->second =
3286
- getAllDerivedDefinitionsImpl<VecTy>(ArrayRef (ClassName));
3287
-
3288
- return Pair.first ->second ;
3282
+ auto [Iter, Inserted] = Cache.try_emplace (ClassName.str ());
3283
+ if (Inserted)
3284
+ Iter->second = getAllDerivedDefinitions (ArrayRef (ClassName));
3285
+ return Iter->second ;
3289
3286
}
3290
3287
3291
- template <typename VecTy>
3292
- VecTy RecordKeeper::getAllDerivedDefinitionsImpl (
3293
- ArrayRef<StringRef> ClassNames) const {
3288
+ std::vector<const Record *>
3289
+ RecordKeeper::getAllDerivedDefinitions (ArrayRef<StringRef> ClassNames) const {
3294
3290
SmallVector<const Record *, 2 > ClassRecs;
3295
- VecTy Defs;
3291
+ std::vector< const Record *> Defs;
3296
3292
3297
3293
assert (ClassNames.size () > 0 && " At least one class must be passed." );
3298
3294
for (const auto &ClassName : ClassNames) {
@@ -3312,46 +3308,11 @@ VecTy RecordKeeper::getAllDerivedDefinitionsImpl(
3312
3308
return Defs;
3313
3309
}
3314
3310
3315
- template <typename VecTy>
3316
- const VecTy &RecordKeeper::getAllDerivedDefinitionsIfDefinedImpl (
3317
- StringRef ClassName, std::map<std::string, VecTy> &Cache) const {
3318
- return getClass (ClassName)
3319
- ? getAllDerivedDefinitionsImpl<VecTy>(ClassName, Cache)
3320
- : Cache[" " ];
3321
- }
3322
-
3323
- ArrayRef<const Record *>
3324
- RecordKeeper::getAllDerivedDefinitions (StringRef ClassName) const {
3325
- return getAllDerivedDefinitionsImpl<std::vector<const Record *>>(
3326
- ClassName, ClassRecordsMapConst);
3327
- }
3328
-
3329
- const std::vector<Record *> &
3330
- RecordKeeper::getAllDerivedDefinitions (StringRef ClassName) {
3331
- return getAllDerivedDefinitionsImpl<std::vector<Record *>>(ClassName,
3332
- ClassRecordsMap);
3333
- }
3334
-
3335
- std::vector<const Record *>
3336
- RecordKeeper::getAllDerivedDefinitions (ArrayRef<StringRef> ClassNames) const {
3337
- return getAllDerivedDefinitionsImpl<std::vector<const Record *>>(ClassNames);
3338
- }
3339
-
3340
- std::vector<Record *>
3341
- RecordKeeper::getAllDerivedDefinitions (ArrayRef<StringRef> ClassNames) {
3342
- return getAllDerivedDefinitionsImpl<std::vector<Record *>>(ClassNames);
3343
- }
3344
-
3345
3311
ArrayRef<const Record *>
3346
3312
RecordKeeper::getAllDerivedDefinitionsIfDefined (StringRef ClassName) const {
3347
- return getAllDerivedDefinitionsIfDefinedImpl<std::vector<const Record *>>(
3348
- ClassName, ClassRecordsMapConst);
3349
- }
3350
-
3351
- const std::vector<Record *> &
3352
- RecordKeeper::getAllDerivedDefinitionsIfDefined (StringRef ClassName) {
3353
- return getAllDerivedDefinitionsIfDefinedImpl<std::vector<Record *>>(
3354
- ClassName, ClassRecordsMap);
3313
+ if (getClass (ClassName))
3314
+ return getAllDerivedDefinitions (ClassName);
3315
+ return Cache[" " ];
3355
3316
}
3356
3317
3357
3318
void RecordKeeper::dumpAllocationStats (raw_ostream &OS) const {
0 commit comments