21 if (RTLCI.isAvailable(Impl)) {
22 RTLIB::Libcall LC = RTLCI.getLibcallFromImpl(Impl);
24 if (LC != RTLIB::UNKNOWN_LIBCALL &&
25 LibcallImpls[LC] == RTLIB::Unsupported)
26 LibcallImpls[LC] = Impl;
31 if (ApplyContextRules)
32 ApplyContextRules(*
this);
39 ModuleAnalysisManager::Invalidator &) {
43 return !PAC.preservedWhenStateless();
49 return LibcallLoweringMap;
ModuleAnalysisManager MAM
function_ref< void(LibcallLoweringInfo &)> ApplyContextRulesFn
Callback applying the caller's context-specific (e.g.
LLVM_ABI LibcallLoweringInfo(const RTLIB::RuntimeLibcallsInfo &RTLCI, ApplyContextRulesFn ApplyContextRules={})
Construct the lowering info from the module-level RTLCI, seeding the default implementation for every...
LLVM_ABI Result run(Module &M, ModuleAnalysisManager &)
Records a mapping from an opaque lowering context to its LibcallLoweringInfo.
void init(const RTLIB::RuntimeLibcallsInfo *RT)
LLVM_ABI bool invalidate(Module &, const PreservedAnalyses &, ModuleAnalysisManager::Invalidator &)
A Module instance is used to store all the information related to an LLVM module.
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.
static auto libcall_impls()
This is an optimization pass for GlobalISel generic memory operations.
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...
A simple container for information about the supported runtime calls.