23 assert(GV.
hasName() &&
"Can't get flags for anonymous symbol");
33 if (isa<Function>(GV))
35 else if (isa<GlobalAlias>(GV) &&
36 isa<Function>(cast<GlobalAlias>(GV).getAliasee()))
42 const auto &
DL = M->getDataLayout();
62 if (isa<FunctionSummary>(S))
71 if (!SymbolFlagsOrErr)
96 if (!SymbolFlagsOrErr)
111 for (
auto &Symbol : Symbols) {
112 std::string SymName = Symbol.str();
114 if (
auto AddrOrErr =
Sym.getAddress())
117 OnResolved(AddrOrErr.takeError());
120 }
else if (
auto Err =
Sym.takeError()) {
121 OnResolved(std::move(Err));
126 if (
auto AddrOrErr =
Sym.getAddress())
129 OnResolved(AddrOrErr.takeError());
132 }
else if (
auto Err =
Sym.takeError()) {
133 OnResolved(std::move(Err));
136 OnResolved(make_error<StringError>(
"Symbol not found: " + Symbol,
143 OnResolved(std::move(Result));
152 for (
auto &Symbol : Symbols) {
153 std::string SymName = Symbol.str();
157 if (!
Sym.getFlags().isStrong())
158 Result.insert(Symbol);
159 }
else if (
auto Err =
Sym.takeError())
160 return std::move(Err);
164 Result.insert(Symbol);
168 return std::move(Result);
MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL
ModuleSummaryIndex.h This file contains the declarations the classes that hold the module index and s...
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
ARM-specific JIT symbol flags.
static ARMJITSymbolFlags fromObjectSymbol(const object::SymbolRef &Symbol)
Tagged union holding either a T or a Error.
Error takeError()
Take ownership of the stored error.
Function and variable summary information to aid decisions and implementation of importing.
GlobalValue::LinkageTypes linkage() const
Return linkage type recorded for this global value.
bool hasLinkOnceLinkage() const
static bool isExternalWeakLinkage(LinkageTypes Linkage)
bool hasLocalLinkage() const
static bool isLinkOnceLinkage(LinkageTypes Linkage)
bool hasHiddenVisibility() const
Module * getParent()
Get the module that this global value is contained inside of...
static bool isCommonLinkage(LinkageTypes Linkage)
static bool isExternalLinkage(LinkageTypes Linkage)
bool hasWeakLinkage() const
bool hasCommonLinkage() const
static bool isWeakLinkage(LinkageTypes Linkage)
Represents a symbol that has been evaluated to an address already.
Flags for symbols in the JIT.
static Expected< JITSymbolFlags > fromObjectSymbol(const object::SymbolRef &Symbol)
Construct a JITSymbolFlags value based on the flags of the given libobject symbol.
static JITSymbolFlags fromSummary(GlobalValueSummary *S)
Construct a JITSymbolFlags value based on the flags of the given global value summary.
static JITSymbolFlags fromGlobalValue(const GlobalValue &GV)
Construct a JITSymbolFlags value based on the flags of the given global value.
std::map< StringRef, JITEvaluatedSymbol > LookupResult
std::set< StringRef > LookupSet
virtual JITSymbol findSymbol(const std::string &Name)=0
This method returns the address of the specified function or variable.
Expected< LookupSet > getResponsibilitySet(const LookupSet &Symbols) final
Performs flags lookup by calling findSymbolInLogicalDylib and returning the flags value for that symb...
virtual JITSymbol findSymbolInLogicalDylib(const std::string &Name)=0
This method returns the address of the specified symbol if it exists within the logical dynamic libra...
void lookup(const LookupSet &Symbols, OnResolvedFunction OnResolved) final
Performs lookup by, for each symbol, first calling findSymbolInLogicalDylib and if that fails calling...
StringRef - Represent a constant reference to a string, i.e.
constexpr StringRef substr(size_t Start, size_t N=npos) const
Return a reference to the substring from [Start, Start + N).
bool starts_with(StringRef Prefix) const
Check if this string starts with the given Prefix.
constexpr bool empty() const
empty - Check if the string is empty.
char front() const
front - Get the first character in the string.
StringRef getName() const
Return a constant reference to the value's name.
This is a value type class that represents a single symbol in the list of symbols in the object file.
unique_function is a type-erasing functor similar to std::function.
This is an optimization pass for GlobalISel generic memory operations.
std::error_code inconvertibleErrorCode()
The value returned by this function can be returned from convertToErrorCode for Error values where no...
void report_fatal_error(Error Err, bool gen_crash_diag=true)
Report a serious error, calling any installed error handler.