LLVM
8.0.1
|
#include "llvm/Target/TargetLoweringObjectFile.h"
Static Public Member Functions | |
static SectionKind | getKindForGlobal (const GlobalObject *GO, const TargetMachine &TM) |
Classify the specified global variable into a set of target independent categories embodied in SectionKind. More... | |
Protected Member Functions | |
virtual MCSection * | SelectSectionForGlobal (const GlobalObject *GO, SectionKind Kind, const TargetMachine &TM) const =0 |
Additional Inherited Members | |
Public Types inherited from llvm::MCObjectFileInfo | |
enum | Environment { IsMachO, IsELF, IsCOFF, IsWasm } |
Definition at line 39 of file TargetLoweringObjectFile.h.
|
default |
|
delete |
|
virtual |
Definition at line 53 of file TargetLoweringObjectFile.cpp.
|
inlinevirtual |
Reimplemented in llvm::TargetLoweringObjectFileCOFF.
Definition at line 198 of file TargetLoweringObjectFile.h.
Referenced by llvm::AsmPrinter::doFinalization().
|
inlinevirtual |
Reimplemented in llvm::TargetLoweringObjectFileCOFF.
Definition at line 201 of file TargetLoweringObjectFile.h.
Referenced by llvm::AsmPrinter::doFinalization().
|
inlinevirtual |
Emit the module-level metadata that the platform cares about.
Reimplemented in llvm::TargetLoweringObjectFileCOFF, llvm::TargetLoweringObjectFileMachO, and llvm::TargetLoweringObjectFileELF.
Definition at line 81 of file TargetLoweringObjectFile.h.
References llvm::AMDGPU::HSAMD::Kernel::Arg::Key::Align, C, getKindForGlobal(), getSectionForConstant(), Kind, and SectionForGlobal().
Referenced by llvm::AsmPrinter::doFinalization().
|
virtual |
Reimplemented in llvm::TargetLoweringObjectFileELF.
Definition at line 133 of file TargetLoweringObjectFile.cpp.
Referenced by llvm::DwarfCFIException::endModule(), and getMangler().
|
virtual |
Reimplemented in llvm::TargetLoweringObjectFileMachO, llvm::TargetLoweringObjectFileELF, llvm::AArch64_MachoTargetObjectFile, and llvm::X86_64MachoTargetObjectFile.
Definition at line 127 of file TargetLoweringObjectFile.cpp.
References llvm::TargetMachine::getSymbol().
Referenced by llvm::DwarfCFIException::beginFragment(), llvm::WinException::beginFunclet(), and SectionForGlobal().
|
inline |
Definition at line 69 of file TargetLoweringObjectFile.h.
Referenced by llvm::TargetLoweringObjectFileMachO::emitModuleMetadata(), llvm::TargetLoweringObjectFileCOFF::emitModuleMetadata(), llvm::MipsTargetObjectFile::getDebugThreadLocalSymbol(), llvm::HexagonTargetObjectFile::getExplicitSectionGlobal(), llvm::XCoreTargetObjectFile::getExplicitSectionGlobal(), llvm::TargetLoweringObjectFileMachO::getExplicitSectionGlobal(), llvm::TargetLoweringObjectFileCOFF::getExplicitSectionGlobal(), llvm::TargetLoweringObjectFileWasm::getExplicitSectionGlobal(), llvm::AArch64_MachoTargetObjectFile::getIndirectSymViaGOTPCRel(), llvm::TargetLoweringObjectFileMachO::getIndirectSymViaGOTPCRel(), llvm::TargetLoweringObjectFileCOFF::getSectionForConstant(), llvm::TargetLoweringObjectFileCOFF::getSectionForJumpTable(), llvm::TargetLoweringObjectFileCOFF::getStaticCtorSection(), llvm::TargetLoweringObjectFileWasm::getStaticCtorSection(), llvm::TargetLoweringObjectFileCOFF::getStaticDtorSection(), llvm::TargetMachine::getSymbol(), llvm::SparcELFTargetObjectFile::getTTypeGlobalReference(), llvm::AArch64_MachoTargetObjectFile::getTTypeGlobalReference(), llvm::TargetLoweringObjectFileMachO::getTTypeGlobalReference(), getTTypeGlobalReference(), getTTypeReference(), llvm::HexagonTargetObjectFile::Initialize(), llvm::LanaiTargetObjectFile::Initialize(), llvm::MipsTargetObjectFile::Initialize(), llvm::TargetLoweringObjectFileWasm::InitializeWasm(), llvm::TargetLoweringObjectFileCOFF::lowerRelativeReference(), llvm::TargetLoweringObjectFileWasm::lowerRelativeReference(), llvm::R600AsmPrinter::runOnMachineFunction(), llvm::AMDGPUAsmPrinter::runOnMachineFunction(), llvm::TargetLoweringObjectFileCOFF::SelectSectionForGlobal(), llvm::TargetLoweringObjectFileWasm::SelectSectionForGlobal(), and llvm::HexagonTargetObjectFile::shouldPutJumpTableInFunctionSection().
|
virtual |
Create a symbol reference to describe the given TLS variable when emitting the address in debug info.
Reimplemented in llvm::X86ELFTargetObjectFile, llvm::MipsTargetObjectFile, and llvm::ARMElfTargetObjectFile.
Definition at line 336 of file TargetLoweringObjectFile.cpp.
References llvm::MCSymbolRefExpr::create().
Referenced by llvm::AddressPool::emit(), llvm::DwarfCompileUnit::getOrCreateGlobalVariableDIE(), getStaticDtorSection(), and llvm::X86ELFTargetObjectFile::X86ELFTargetObjectFile().
|
pure virtual |
Targets should implement this method to assign a section to globals with an explicit section specfied.
The implementation of this method can assume that GO->hasSection() is true.
Implemented in llvm::TargetLoweringObjectFileWasm, llvm::TargetLoweringObjectFileCOFF, llvm::TargetLoweringObjectFileMachO, llvm::TargetLoweringObjectFileELF, llvm::ARMElfTargetObjectFile, llvm::NVPTXTargetObjectFile, llvm::AMDGPUTargetObjectFile, llvm::XCoreTargetObjectFile, and llvm::HexagonTargetObjectFile.
Referenced by SectionForGlobal().
|
inlinevirtual |
Get the target specific PC relative GOT entry relocation.
Reimplemented in llvm::TargetLoweringObjectFileMachO, llvm::AArch64_MachoTargetObjectFile, and llvm::X86_64MachoTargetObjectFile.
Definition at line 190 of file TargetLoweringObjectFile.h.
Referenced by handleIndirectSymViaGOTPCRel().
|
static |
Classify the specified global variable into a set of target independent categories embodied in SectionKind.
getKindForGlobal - This is a top-level target-independent classifier for a global object.
Given a global variable and information from the TM, this function classifies the global in a target independent manner. This function may be overridden by the target implementation.
Definition at line 143 of file TargetLoweringObjectFile.cpp.
References assert(), C, llvm::SectionKind::getBSS(), llvm::SectionKind::getBSSExtern(), llvm::SectionKind::getBSSLocal(), llvm::SectionKind::getCommon(), llvm::SectionKind::getData(), llvm::SectionKind::getMergeable1ByteCString(), llvm::SectionKind::getMergeable2ByteCString(), llvm::SectionKind::getMergeable4ByteCString(), llvm::SectionKind::getMergeableConst16(), llvm::SectionKind::getMergeableConst32(), llvm::SectionKind::getMergeableConst4(), llvm::SectionKind::getMergeableConst8(), llvm::SectionKind::getReadOnly(), llvm::SectionKind::getReadOnlyWithRel(), llvm::TargetMachine::getRelocationModel(), llvm::SectionKind::getText(), llvm::SectionKind::getThreadBSS(), llvm::SectionKind::getThreadData(), llvm::Value::getType(), llvm::GlobalValue::hasAvailableExternallyLinkage(), llvm::GlobalValue::isDeclaration(), IsNullTerminatedString(), isSuitableForBSS(), llvm::Constant::needsRelocation(), llvm::TargetOptions::NoZerosInBSS, llvm::TargetMachine::Options, llvm::Reloc::ROPI, llvm::Reloc::ROPI_RWPI, llvm::Reloc::RWPI, and llvm::Reloc::Static.
Referenced by llvm::AsmPrinter::EmitGlobalVariable(), emitModuleMetadata(), llvm::TargetLoweringObjectFileMachO::getNameWithPrefix(), llvm::LanaiTargetObjectFile::isGlobalInSmallSection(), llvm::MipsTargetObjectFile::IsGlobalInSmallSection(), and SectionForGlobal().
|
inline |
Definition at line 146 of file TargetLoweringObjectFile.h.
References LSDAEncoding.
Referenced by llvm::DwarfCFIException::beginFragment(), llvm::DwarfCFIException::beginFunction(), and llvm::WinException::beginFunction().
|
inline |
Definition at line 70 of file TargetLoweringObjectFile.h.
References emitPersonalityValue(), Initialize(), and llvm::SystemZISD::TM.
Referenced by llvm::TargetLoweringObjectFileCOFF::emitLinkerFlagsForGlobal(), llvm::TargetLoweringObjectFileCOFF::emitLinkerFlagsForUsed(), llvm::AArch64MCInstLower::GetGlobalAddressSymbol(), llvm::AArch64_MachoTargetObjectFile::getNameWithPrefix(), llvm::TargetLoweringObjectFileMachO::getNameWithPrefix(), llvm::TargetLoweringObjectFileCOFF::getNameWithPrefix(), llvm::TargetMachine::getSymbol(), GetSymbolFromOperand(), llvm::TargetLoweringObjectFileCOFF::SelectSectionForGlobal(), and llvm::TargetLoweringObjectFileWasm::SelectSectionForGlobal().
|
virtual |
Reimplemented in llvm::TargetLoweringObjectFileCOFF, llvm::TargetLoweringObjectFileMachO, and llvm::AArch64_MachoTargetObjectFile.
Definition at line 342 of file TargetLoweringObjectFile.cpp.
References llvm::Mangler::getNameWithPrefix().
Referenced by llvm::TargetMachine::getNameWithPrefix(), and SectionForGlobal().
|
inline |
Definition at line 145 of file TargetLoweringObjectFile.h.
References PersonalityEncoding.
Referenced by llvm::DwarfCFIException::beginFragment(), llvm::DwarfCFIException::beginFunction(), llvm::WinException::beginFunction(), and llvm::DwarfCFIException::endModule().
|
inlinevirtual |
If supported, return the section to use for the llvm.commandline metadata.
Otherwise, return nullptr.
Reimplemented in llvm::TargetLoweringObjectFileELF.
Definition at line 206 of file TargetLoweringObjectFile.h.
References SelectSectionForGlobal().
Referenced by llvm::AsmPrinter::EmitSpecialLLVMGlobal().
|
virtual |
Given a constant with the SectionKind, return a section that it should be placed in.
Given a mergable constant with the specified size and relocation information, return a section that it should be placed in.
Reimplemented in llvm::TargetLoweringObjectFileCOFF, llvm::TargetLoweringObjectFileMachO, llvm::TargetLoweringObjectFileELF, llvm::MipsTargetObjectFile, llvm::LanaiTargetObjectFile, llvm::XCoreTargetObjectFile, and llvm::NVPTXTargetObjectFile.
Definition at line 295 of file TargetLoweringObjectFile.cpp.
References llvm::MCObjectFileInfo::DataSection, llvm::SectionKind::isReadOnly(), and llvm::MCObjectFileInfo::ReadOnlySection.
Referenced by llvm::AsmPrinter::doFinalization(), llvm::AsmPrinter::EmitConstantPool(), emitModuleMetadata(), llvm::TargetLoweringObjectFileCOFF::getSectionForConstant(), and getSectionForJumpTable().
|
virtual |
Reimplemented in llvm::TargetLoweringObjectFileCOFF, and llvm::TargetLoweringObjectFileELF.
Definition at line 270 of file TargetLoweringObjectFile.cpp.
References llvm::AMDGPU::HSAMD::Kernel::Arg::Key::Align, llvm::Module::getDataLayout(), llvm::GlobalValue::getParent(), llvm::SectionKind::getReadOnly(), and getSectionForConstant().
Referenced by llvm::AsmPrinter::EmitJumpTableInfo(), and SectionForGlobal().
|
inlinevirtual |
Reimplemented in llvm::TargetLoweringObjectFileWasm, llvm::TargetLoweringObjectFileCOFF, and llvm::TargetLoweringObjectFileELF.
Definition at line 152 of file TargetLoweringObjectFile.h.
References StaticCtorSection.
Referenced by llvm::AsmPrinter::EmitSpecialLLVMGlobal().
|
inlinevirtual |
Reimplemented in llvm::TargetLoweringObjectFileWasm, llvm::TargetLoweringObjectFileCOFF, and llvm::TargetLoweringObjectFileELF.
Definition at line 157 of file TargetLoweringObjectFile.h.
References getDebugThreadLocalSymbol(), and StaticDtorSection.
Referenced by llvm::AsmPrinter::EmitSpecialLLVMGlobal().
MCSymbol * TargetLoweringObjectFile::getSymbolWithGlobalValueBase | ( | const GlobalValue * | GV, |
StringRef | Suffix, | ||
const TargetMachine & | TM | ||
) | const |
Return the MCSymbol for a private symbol with global value name as its base, with the specified suffix.
Definition at line 116 of file TargetLoweringObjectFile.cpp.
References assert(), llvm::StringRef::begin(), llvm::StringRef::empty(), llvm::StringRef::end(), llvm::Module::getDataLayout(), llvm::TargetMachine::getNameWithPrefix(), llvm::MCContext::getOrCreateSymbol(), llvm::GlobalValue::getParent(), and llvm::DataLayout::getPrivateGlobalPrefix().
Referenced by llvm::TargetLoweringObjectFileMachO::getCFIPersonalitySymbol(), llvm::AsmPrinter::getSymbolWithGlobalValueBase(), llvm::SparcELFTargetObjectFile::getTTypeGlobalReference(), llvm::TargetLoweringObjectFileMachO::getTTypeGlobalReference(), and SectionForGlobal().
|
inline |
Definition at line 147 of file TargetLoweringObjectFile.h.
References getTTypeReference(), and TTypeEncoding.
Referenced by llvm::EHStreamer::emitExceptionTable().
|
virtual |
Return an MCExpr to use for a reference to the specified global variable from exception handling information.
getTTypeGlobalReference - Return an MCExpr to use for a reference to the specified global variable from exception handling information.
Reimplemented in llvm::TargetLoweringObjectFileMachO, llvm::TargetLoweringObjectFileELF, llvm::AArch64_MachoTargetObjectFile, llvm::SparcELFTargetObjectFile, llvm::ARMElfTargetObjectFile, and llvm::X86_64MachoTargetObjectFile.
Definition at line 307 of file TargetLoweringObjectFile.cpp.
References llvm::MCSymbolRefExpr::create(), getContext(), llvm::TargetMachine::getSymbol(), getTTypeReference(), and llvm::Ref.
Referenced by llvm::AsmPrinter::EmitTTypeReference(), llvm::TargetLoweringObjectFileELF::getTTypeGlobalReference(), llvm::TargetLoweringObjectFileMachO::getTTypeGlobalReference(), and SectionForGlobal().
const MCExpr * TargetLoweringObjectFile::getTTypeReference | ( | const MCSymbolRefExpr * | Sym, |
unsigned | Encoding, | ||
MCStreamer & | Streamer | ||
) | const |
Definition at line 317 of file TargetLoweringObjectFile.cpp.
References llvm::MCSymbolRefExpr::create(), llvm::MCBinaryExpr::createSub(), llvm::MCContext::createTempSymbol(), llvm::dwarf::DW_EH_PE_absptr, llvm::dwarf::DW_EH_PE_pcrel, llvm::MCStreamer::EmitLabel(), getContext(), and llvm::report_fatal_error().
Referenced by getTTypeEncoding(), llvm::TargetLoweringObjectFileELF::getTTypeGlobalReference(), llvm::TargetLoweringObjectFileMachO::getTTypeGlobalReference(), and getTTypeGlobalReference().
|
virtual |
This method must be called before any actual lowering is done.
Initialize - this method must be called before any actual lowering is done.
This specifies the current context for codegen, and gives the lowering implementations a chance to set up their default sections.
Reimplemented in llvm::TargetLoweringObjectFileCOFF, llvm::TargetLoweringObjectFileMachO, llvm::TargetLoweringObjectFileELF, llvm::MipsTargetObjectFile, llvm::LanaiTargetObjectFile, llvm::SparcELFTargetObjectFile, llvm::XCoreTargetObjectFile, llvm::ARMElfTargetObjectFile, llvm::NVPTXTargetObjectFile, llvm::WebAssemblyTargetObjectFile, llvm::AVRTargetObjectFile, and llvm::HexagonTargetObjectFile.
Definition at line 40 of file TargetLoweringObjectFile.cpp.
References llvm::dwarf::DW_EH_PE_absptr, llvm::TargetMachine::getCodeModel(), llvm::TargetMachine::getTargetTriple(), llvm::MCObjectFileInfo::InitMCObjectFileInfo(), llvm::TargetMachine::isPositionIndependent(), llvm::CodeModel::Large, LSDAEncoding, PersonalityEncoding, and TTypeEncoding.
Referenced by getMangler(), llvm::NVPTXTargetObjectFile::Initialize(), llvm::WebAssemblyTargetObjectFile::Initialize(), llvm::TargetLoweringObjectFileELF::Initialize(), llvm::TargetLoweringObjectFileMachO::Initialize(), and llvm::TargetLoweringObjectFileCOFF::Initialize().
|
inlinevirtual |
Reimplemented in llvm::TargetLoweringObjectFileWasm, llvm::TargetLoweringObjectFileCOFF, and llvm::TargetLoweringObjectFileELF.
Definition at line 166 of file TargetLoweringObjectFile.h.
Referenced by llvm::AsmPrinter::lowerConstant().
|
delete |
MCSection * TargetLoweringObjectFile::SectionForGlobal | ( | const GlobalObject * | GO, |
SectionKind | Kind, | ||
const TargetMachine & | TM | ||
) | const |
This method computes the appropriate section to emit the specified global variable or function definition.
This should not be passed external (or available externally) globals.
Definition at line 246 of file TargetLoweringObjectFile.cpp.
References llvm::AMDGPU::HSAMD::Kernel::Key::Attrs, F(), getExplicitSectionGlobal(), llvm::GlobalObject::hasSection(), llvm::SectionKind::isBSS(), llvm::SectionKind::isData(), llvm::SectionKind::isReadOnly(), and SelectSectionForGlobal().
Referenced by llvm::AsmPrinter::EmitGlobalVariable(), emitModuleMetadata(), llvm::TargetLoweringObjectFileMachO::getNameWithPrefix(), and SectionForGlobal().
|
inline |
This method computes the appropriate section to emit the specified global variable or function definition.
This should not be passed external (or available externally) globals.
Definition at line 104 of file TargetLoweringObjectFile.h.
References F(), getCFIPersonalitySymbol(), getExplicitSectionGlobal(), getKindForGlobal(), getNameWithPrefix(), getSectionForJumpTable(), getSymbolWithGlobalValueBase(), getTTypeGlobalReference(), SectionForGlobal(), and shouldPutJumpTableInFunctionSection().
|
protectedpure virtual |
Implemented in llvm::TargetLoweringObjectFileWasm, llvm::TargetLoweringObjectFileCOFF, llvm::TargetLoweringObjectFileMachO, llvm::TargetLoweringObjectFileELF, llvm::NVPTXTargetObjectFile, llvm::ARMElfTargetObjectFile, llvm::MipsTargetObjectFile, llvm::LanaiTargetObjectFile, llvm::XCoreTargetObjectFile, llvm::AMDGPUTargetObjectFile, llvm::AVRTargetObjectFile, and llvm::HexagonTargetObjectFile.
Referenced by getSectionForCommandLines(), and SectionForGlobal().
|
virtual |
Reimplemented in llvm::TargetLoweringObjectFileWasm, llvm::TargetLoweringObjectFileELF, and llvm::HexagonTargetObjectFile.
Definition at line 278 of file TargetLoweringObjectFile.cpp.
References llvm::GlobalValue::isWeakForLinker().
Referenced by llvm::AsmPrinter::EmitJumpTableInfo(), and SectionForGlobal().
|
inline |
Target supports TLS offset relocation in debug section?
Definition at line 185 of file TargetLoweringObjectFile.h.
References SupportDebugThreadLocalLocation.
Referenced by llvm::DwarfCompileUnit::getOrCreateGlobalVariableDIE().
|
inline |
Target GOT "PC"-relative relocation supports encoding an additional binary expression with an offset?
Definition at line 180 of file TargetLoweringObjectFile.h.
References SupportGOTPCRelWithOffset.
Referenced by handleIndirectSymViaGOTPCRel().
|
inline |
Target supports replacing a data "PC"-relative access to a symbol through another symbol, by accessing the later via a GOT entry instead?
Definition at line 174 of file TargetLoweringObjectFile.h.
References SupportIndirectSymViaGOTPCRel.
Referenced by emitGlobalConstantImpl().
|
protected |
Definition at line 53 of file TargetLoweringObjectFile.h.
Referenced by getLSDAEncoding(), Initialize(), and llvm::TargetLoweringObjectFileMachO::Initialize().
|
protected |
PersonalityEncoding, LSDAEncoding, TTypeEncoding - Some encoding values for EH.
Definition at line 52 of file TargetLoweringObjectFile.h.
Referenced by getPersonalityEncoding(), Initialize(), and llvm::TargetLoweringObjectFileMachO::Initialize().
|
protected |
This section contains the static constructor pointer list.
Definition at line 57 of file TargetLoweringObjectFile.h.
Referenced by getStaticCtorSection(), llvm::TargetLoweringObjectFileCOFF::getStaticCtorSection(), llvm::TargetLoweringObjectFileWasm::getStaticCtorSection(), llvm::TargetLoweringObjectFileMachO::Initialize(), llvm::TargetLoweringObjectFileCOFF::Initialize(), and llvm::TargetLoweringObjectFileWasm::InitializeWasm().
|
protected |
This section contains the static destructor pointer list.
Definition at line 60 of file TargetLoweringObjectFile.h.
Referenced by getStaticDtorSection(), llvm::TargetLoweringObjectFileCOFF::getStaticDtorSection(), llvm::TargetLoweringObjectFileMachO::Initialize(), and llvm::TargetLoweringObjectFileCOFF::Initialize().
Definition at line 48 of file TargetLoweringObjectFile.h.
Referenced by supportDebugThreadLocalLocation().
Definition at line 47 of file TargetLoweringObjectFile.h.
Referenced by llvm::AArch64_MachoTargetObjectFile::AArch64_MachoTargetObjectFile(), and supportGOTPCRelWithOffset().
Definition at line 46 of file TargetLoweringObjectFile.h.
Referenced by supportIndirectSymViaGOTPCRel(), and llvm::TargetLoweringObjectFileMachO::TargetLoweringObjectFileMachO().
|
protected |
Definition at line 54 of file TargetLoweringObjectFile.h.
Referenced by getTTypeEncoding(), Initialize(), llvm::TargetLoweringObjectFileMachO::Initialize(), and llvm::TargetLoweringObjectFileWasm::InitializeWasm().