34 : TheTarget(
T),
DL(DataLayoutString), TargetTriple(TT),
36 MRI(nullptr), MII(nullptr), STI(nullptr), RequireStructuredCFG(
false),
54#define RESET_OPTION(X, Y) \
56 Options.X = F.getFnAttribute(Y).getValueAsBool(); \
62 RESET_OPTION(NoSignedZerosFPMath,
"no-signed-zeros-fp-math");
108 if (TT.isOSBinFormatCOFF()) {
119 isa<GlobalVariable>(GV))
132 if (TT.isOSBinFormatGOFF())
135 if (TT.isOSBinFormatMachO()) {
141 assert(TT.isOSBinFormatELF() || TT.isOSBinFormatWasm() ||
142 TT.isOSBinFormatXCOFF());
155 if (IsSharedLibrary) {
169 if (SelectedModel > Model)
170 return SelectedModel;
187 bool MayAlwaysUsePrivate)
const {
217 if (Version ==
"none")
218 return {INT_MAX, INT_MAX};
219 std::pair<int, int> Ret;
220 if (!Version.consumeInteger(10, Ret.first) && Version.consume_front(
"."))
221 Version.consumeInteger(10, Ret.second);
unsigned const MachineRegisterInfo * MRI
MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL
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)
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...
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.
A Module instance is used to store all the information related to an LLVM module.
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
const Triple & getTargetTriple() const
CodeGenOpt::Level getOptLevel() const
Returns the optimization level: None, Less, Default, or Aggressive.
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.
CodeGenOpt::Level OptLevel
static std::pair< int, int > parseBinutilsVersion(StringRef Version)
TargetIRAnalysis getTargetIRAnalysis() const
Get a TargetIRAnalysis appropriate for the target.
MCSymbol * getSymbol(const GlobalValue *GV) const
bool shouldAssumeDSOLocal(const Module &M, const GlobalValue *GV) const
void setOptLevel(CodeGenOpt::Level Level)
Overrides the optimization level.
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 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.
Level
Code generation optimization level.
This is an optimization pass for GlobalISel generic memory operations.