mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-26 07:29:55 +00:00
Reduce indentation in GVRequiresExtraLoad. Return true for windows
with DLLImport symbols even when in -static mode. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75093 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
e4df756289
commit
73b5b71369
@ -40,32 +40,34 @@ AsmWriterFlavor("x86-asm-syntax", cl::init(X86Subtarget::Unset),
|
||||
/// or index register of the address, not the GV offset field.
|
||||
bool X86Subtarget::GVRequiresExtraLoad(const GlobalValue* GV,
|
||||
const TargetMachine& TM,
|
||||
bool isDirectCall) const
|
||||
{
|
||||
// FIXME: PIC
|
||||
if (TM.getRelocationModel() != Reloc::Static &&
|
||||
TM.getCodeModel() != CodeModel::Large) {
|
||||
if (isTargetDarwin()) {
|
||||
if (isDirectCall)
|
||||
return false;
|
||||
bool isDecl = GV->isDeclaration() && !GV->hasNotBeenReadFromBitcode();
|
||||
if (GV->hasHiddenVisibility() &&
|
||||
(Is64Bit || (!isDecl && !GV->hasCommonLinkage())))
|
||||
// If symbol visibility is hidden, the extra load is not needed if
|
||||
// target is x86-64 or the symbol is definitely defined in the current
|
||||
// translation unit.
|
||||
return false;
|
||||
return !isDirectCall && (isDecl || GV->isWeakForLinker());
|
||||
} else if (isTargetELF()) {
|
||||
// Extra load is needed for all externally visible.
|
||||
if (isDirectCall)
|
||||
return false;
|
||||
if (GV->hasLocalLinkage() || GV->hasHiddenVisibility())
|
||||
return false;
|
||||
return true;
|
||||
} else if (isTargetCygMing() || isTargetWindows()) {
|
||||
return (GV->hasDLLImportLinkage());
|
||||
}
|
||||
bool isDirectCall) const {
|
||||
// Windows targets only require an extra load for DLLImport linkage values,
|
||||
// and they need these regardless of whether we're in PIC mode or not.
|
||||
if (isTargetCygMing() || isTargetWindows())
|
||||
return GV->hasDLLImportLinkage();
|
||||
|
||||
if (TM.getRelocationModel() == Reloc::Static ||
|
||||
TM.getCodeModel() == CodeModel::Large)
|
||||
return false;
|
||||
|
||||
if (isTargetDarwin()) {
|
||||
if (isDirectCall)
|
||||
return false;
|
||||
bool isDecl = GV->isDeclaration() && !GV->hasNotBeenReadFromBitcode();
|
||||
if (GV->hasHiddenVisibility() &&
|
||||
(Is64Bit || (!isDecl && !GV->hasCommonLinkage())))
|
||||
// If symbol visibility is hidden, the extra load is not needed if
|
||||
// target is x86-64 or the symbol is definitely defined in the current
|
||||
// translation unit.
|
||||
return false;
|
||||
return !isDirectCall && (isDecl || GV->isWeakForLinker());
|
||||
} else if (isTargetELF()) {
|
||||
// Extra load is needed for all externally visible.
|
||||
if (isDirectCall)
|
||||
return false;
|
||||
if (GV->hasLocalLinkage() || GV->hasHiddenVisibility())
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user