25                               ModuleAnalysisManager::Invalidator &) {
 
   26  for (
const auto &
F : M) {
 
   27    if (
F.isDeclaration() || !
F.hasGC())
 
 
   41    if (
F.isDeclaration() || !
F.hasGC())
 
   44    auto [It, Inserted] = StrategyMap.
try_emplace(GCName);
 
   47      It->second->Name = GCName;
 
 
   57  assert(!
F.isDeclaration() && 
"Can only get GCFunctionInfo for a definition!");
 
   58  assert(
F.hasGC() && 
"Function doesn't have GC!");
 
   63      "This pass need module analysis `collector-metadata`!");
 
   66  GCStrategy &S = *Map.try_emplace(
F.getGC()).first->second;
 
 
   72                "Create Garbage Collector Module Metadata", 
false, 
true)
 
   77    : 
F(
F), S(S), FrameSize(~0LL) {}
 
 
   82                                FunctionAnalysisManager::Invalidator &) {
 
 
   96  assert(!
F.isDeclaration() && 
"Can only get GCFunctionInfo for a definition!");
 
  100  if (
I != FInfoMap.end())
 
  104  Functions.push_back(std::make_unique<GCFunctionInfo>(
F, *S));
 
 
  113  GCStrategyList.clear();
 
 
  120  auto NMI = GCStrategyMap.find(Name);
 
  121  if (NMI != GCStrategyMap.end())
 
  122    return NMI->getValue();
 
  125  S->Name = std::string(Name);
 
  126  GCStrategyMap[Name] = S.get();
 
  127  GCStrategyList.push_back(std::move(S));
 
  128  return GCStrategyList.back().get();
 
 
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
 
Analysis containing CSE Info
 
Module.h This file contains the declarations for the Module class.
 
FunctionAnalysisManager FAM
 
ModuleAnalysisManager MAM
 
#define INITIALIZE_PASS(passName, arg, name, cfg, analysis)
 
This templated class represents "all analyses that operate over <aparticular IR unit>" (e....
 
DenseMapIterator< KeyT, ValueT, KeyInfoT, BucketT > iterator
 
An analysis pass which caches information about the Function.
 
LLVM_ABI Result run(Function &F, FunctionAnalysisManager &FAM)
 
Garbage collection metadata for a single function.
 
LLVM_ABI ~GCFunctionInfo()
 
LLVM_ABI bool invalidate(Function &F, const PreservedAnalyses &PA, FunctionAnalysisManager::Invalidator &Inv)
Handle invalidation explicitly.
 
An analysis pass which caches information about the entire Module.
 
LLVM_ABI GCFunctionInfo & getFunctionInfo(const Function &F)
get - Look up function metadata.
 
LLVM_ABI void clear()
clear - Resets the pass.
 
LLVM_ABI GCStrategy * getGCStrategy(const StringRef Name)
Lookup the GCStrategy object associated with the given gc name.
 
std::pair< iterator, bool > try_emplace(StringRef GCName)
 
LLVM_ABI bool invalidate(Module &M, const PreservedAnalyses &PA, ModuleAnalysisManager::Invalidator &Inv)
Handle invalidation explicitly.
 
bool contains(StringRef GCName) const
 
GCStrategy describes a garbage collector algorithm's code generation requirements,...
 
A Module instance is used to store all the information related to an LLVM module.
 
static LLVM_ABI PassRegistry * getPassRegistry()
getPassRegistry - Access the global registry object, which is automatically initialized at applicatio...
 
A set of analyses that are preserved following a run of a transformation pass.
 
PreservedAnalysisChecker getChecker() const
Build a checker for this PreservedAnalyses and the specified analysis type.
 
StringRef - Represent a constant reference to a string, i.e.
 
This is an optimization pass for GlobalISel generic memory operations.
 
OuterAnalysisManagerProxy< ModuleAnalysisManager, Function > ModuleAnalysisManagerFunctionProxy
Provide the ModuleAnalysisManager to Function proxy.
 
LLVM_ABI void initializeGCModuleInfoPass(PassRegistry &)
 
LLVM_ABI std::unique_ptr< GCStrategy > getGCStrategy(const StringRef Name)
Lookup the GCStrategy object associated with the given gc name.
 
AnalysisManager< Function > FunctionAnalysisManager
Convenience typedef for the Function analysis manager.
 
AnalysisManager< Module > ModuleAnalysisManager
Convenience typedef for the Module analysis manager.
 
A special type used by analysis passes to provide an address that identifies that particular analysis...