36 : TheTarget(
T),
DL(DataLayoutString), TargetTriple(TT),
38 MRI(nullptr), MII(nullptr), STI(nullptr), RequireStructuredCFG(
false),
59 auto *GV = dyn_cast<GlobalVariable>(GO);
62 return Name.consume_front(Prefix) && (
Name.empty() ||
Name[0] ==
'.');
69 if (GO->hasSection()) {
71 return IsPrefix(
Name,
".ltext");
76 if (GV->isThreadLocal())
81 if (
auto CM = GV->getCodeModel()) {
92 if (GV->hasSection()) {
94 return IsPrefix(
Name,
".lbss") || IsPrefix(
Name,
".ldata") ||
95 IsPrefix(
Name,
".lrodata");
101 if (!GV->getValueType()->isSized())
105 if (GV->isDeclaration() && (GV->getName() ==
"__ehdr_start" ||
106 GV->getName().starts_with(
"__start_") ||
107 GV->getName().starts_with(
"__stop_")))
130#define RESET_OPTION(X, Y) \
132 Options.X = F.getFnAttribute(Y).getValueAsBool(); \
138 RESET_OPTION(NoSignedZerosFPMath,
"no-signed-zeros-fp-math");
197 if (TT.isOSBinFormatCOFF()) {
208 isa<GlobalVariable>(GV))
221 if (TT.isOSBinFormatGOFF())
224 if (TT.isOSBinFormatMachO()) {
230 assert(TT.isOSBinFormatELF() || TT.isOSBinFormatWasm() ||
231 TT.isOSBinFormatXCOFF());
245 if (IsSharedLibrary) {
259 if (SelectedModel > Model)
260 return SelectedModel;
272 bool MayAlwaysUsePrivate)
const {
303 return {INT_MAX, INT_MAX};
304 std::pair<int, int> Ret;
305 if (!
Version.consumeInteger(10, Ret.first) &&
Version.consume_front(
"."))
306 Version.consumeInteger(10, Ret.second);
unsigned const MachineRegisterInfo * MRI
MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL
Module.h This file contains the declarations for the Module class.
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
static TLSModel::Model getSelectedTLSModel(const GlobalValue *GV)
Get the IR-specified TLS model for Var.
#define RESET_OPTION(X, Y)
A parsed version of the target data layout string in and methods for querying it.
TypeSize getTypeAllocSize(Type *Ty) const
Returns the offset in bytes between successive objects of the specified type, including alignment pad...
bool hasPrivateLinkage() const
bool hasExternalWeakLinkage() const
ThreadLocalMode getThreadLocalMode() const
bool hasDLLImportStorageClass() const
bool isDeclarationForLinker() const
Module * getParent()
Get the module that this global value is contained inside of...
const GlobalObject * getAliaseeObject() const
bool isStrongDefinitionForLinker() const
Returns true if this global's definition will be the one chosen by the linker.
MCSymbol * getOrCreateSymbol(const Twine &Name)
Lookup the symbol inside with the specified Name.
MCContext & getContext() const
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
void getNameWithPrefix(raw_ostream &OS, const GlobalValue *GV, bool CannotUsePrivateLabel) const
Print the appropriate prefix and the specified global variable's name.
PIELevel::Level getPIELevel() const
Returns the PIE level (small or large model)
SmallString - A SmallString is just a SmallVector with methods and accessors that make it work better...
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
StringRef - Represent a constant reference to a string, i.e.
Analysis pass providing the TargetTransformInfo.
virtual void getNameWithPrefix(SmallVectorImpl< char > &OutName, const GlobalValue *GV, const TargetMachine &TM) const
Mangler & getMangler() const
virtual MCSymbol * getTargetSymbol(const GlobalValue *GV, const TargetMachine &TM) const
Targets that have a special convention for their symbols could use this hook to return a specialized ...
TLSModel::Model getTLSModel(const GlobalValue *GV) const
Returns the TLS model which should be used for the given global variable.
bool isPositionIndependent() const
uint64_t getMaxCodeSize() const
Returns the maximum code size possible under the code model.
const Triple & getTargetTriple() const
bool useTLSDESC() const
Returns true if this target uses TLS Descriptors.
uint64_t LargeDataThreshold
bool useEmulatedTLS() const
Returns true if this target uses emulated TLS.
virtual TargetLoweringObjectFile * getObjFileLowering() const
Reloc::Model getRelocationModel() const
Returns the code generation relocation model.
virtual TargetTransformInfo getTargetTransformInfo(const Function &F) const
Return a TargetTransformInfo for a given function.
const DataLayout DL
DataLayout for the target: keep ABI type size and alignment.
bool shouldAssumeDSOLocal(const GlobalValue *GV) const
static std::pair< int, int > parseBinutilsVersion(StringRef Version)
TargetIRAnalysis getTargetIRAnalysis() const
Get a TargetIRAnalysis appropriate for the target.
MCSymbol * getSymbol(const GlobalValue *GV) const
CodeModel::Model getCodeModel() const
Returns the code model.
bool isLargeGlobalValue(const GlobalValue *GV) const
void resetTargetOptions(const Function &F) const
Reset the target options based on the function's attributes.
TargetMachine(const Target &T, StringRef DataLayoutString, const Triple &TargetTriple, StringRef CPU, StringRef FS, const TargetOptions &Options)
void getNameWithPrefix(SmallVectorImpl< char > &Name, const GlobalValue *GV, Mangler &Mang, bool MayAlwaysUsePrivate=false) const
unsigned EnableTLSDESC
EnableTLSDESC - This flag enables TLS Descriptors.
unsigned EmulatedTLS
EmulatedTLS - This flag enables emulated TLS model, using emutls function in the runtime library.
Target - Wrapper for Target specific information.
Triple - Helper class for working with autoconf configuration names.
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
This is an optimization pass for GlobalISel generic memory operations.
uint64_t maxUIntN(uint64_t N)
Gets the maximum value for a N-bit unsigned integer.
Implement std::hash so that hash_code can be used in STL containers.