diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2021-11-19 20:06:13 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2021-11-19 20:06:13 +0000 |
| commit | c0981da47d5696fe36474fcf86b4ce03ae3ff818 (patch) | |
| tree | f42add1021b9f2ac6a69ac7cf6c4499962739a45 /llvm/lib/CodeGen/GCMetadata.cpp | |
| parent | 344a3780b2e33f6ca763666c380202b18aab72a3 (diff) | |
Diffstat (limited to 'llvm/lib/CodeGen/GCMetadata.cpp')
| -rw-r--r-- | llvm/lib/CodeGen/GCMetadata.cpp | 25 |
1 files changed, 5 insertions, 20 deletions
diff --git a/llvm/lib/CodeGen/GCMetadata.cpp b/llvm/lib/CodeGen/GCMetadata.cpp index 8fae798b31d9..af5515cc6bfd 100644 --- a/llvm/lib/CodeGen/GCMetadata.cpp +++ b/llvm/lib/CodeGen/GCMetadata.cpp @@ -145,24 +145,9 @@ GCStrategy *GCModuleInfo::getGCStrategy(const StringRef Name) { if (NMI != GCStrategyMap.end()) return NMI->getValue(); - for (auto& Entry : GCRegistry::entries()) { - if (Name == Entry.getName()) { - std::unique_ptr<GCStrategy> S = Entry.instantiate(); - S->Name = std::string(Name); - GCStrategyMap[Name] = S.get(); - GCStrategyList.push_back(std::move(S)); - return GCStrategyList.back().get(); - } - } - - if (GCRegistry::begin() == GCRegistry::end()) { - // In normal operation, the registry should not be empty. There should - // be the builtin GCs if nothing else. The most likely scenario here is - // that we got here without running the initializers used by the Registry - // itself and it's registration mechanism. - const std::string error = ("unsupported GC: " + Name).str() + - " (did you remember to link and initialize the CodeGen library?)"; - report_fatal_error(error); - } else - report_fatal_error(std::string("unsupported GC: ") + Name); + std::unique_ptr<GCStrategy> S = llvm::getGCStrategy(Name); + S->Name = std::string(Name); + GCStrategyMap[Name] = S.get(); + GCStrategyList.push_back(std::move(S)); + return GCStrategyList.back().get(); } |
