diff options
author | Arthur Eubanks <aeubanks@google.com> | 2023-12-14 09:28:27 -0800 |
---|---|---|
committer | Arthur Eubanks <aeubanks@google.com> | 2023-12-14 09:49:35 -0800 |
commit | ec92d74a0ef89b9dd46aee6ec8aca6bfd3c66a54 (patch) | |
tree | a632502802e5bc0c9570c459fa24b8ade0d6cef8 /llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp | |
parent | f976719fb2cb23364957e5993f7fc3684ee15391 (diff) | |
download | llvm-ec92d74a0ef89b9dd46aee6ec8aca6bfd3c66a54.zip llvm-ec92d74a0ef89b9dd46aee6ec8aca6bfd3c66a54.tar.gz llvm-ec92d74a0ef89b9dd46aee6ec8aca6bfd3c66a54.tar.bz2 |
Reland [X86] Respect code models more when determining if a global reference can fit in 32 bits (#75386)
For non-GlobalValue references, the small and medium code models can use
32 bit constants.
For GlobalValue references, use TargetMachine::isLargeGlobalObject().
Look through aliases for determining if a GlobalValue is small or large.
Even the large code model can reference small objects with 32 bit
constants as long as we're in no-pic mode, or if the reference is offset
from the GOT.
Original commit broke the build...
Diffstat (limited to 'llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp')
-rw-r--r-- | llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp index 27d47aa..18f4d54 100644 --- a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp +++ b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp @@ -645,7 +645,7 @@ getELFSectionNameForGlobal(const GlobalObject *GO, SectionKind Kind, Name = ".rodata.cst"; Name += utostr(EntrySize); } else { - Name = getSectionPrefixForGlobal(Kind, TM.isLargeGlobalObject(GO)); + Name = getSectionPrefixForGlobal(Kind, TM.isLargeGlobalValue(GO)); } bool HasPrefix = false; @@ -765,7 +765,7 @@ getGlobalObjectInfo(const GlobalObject *GO, const TargetMachine &TM) { Group = C->getName(); IsComdat = C->getSelectionKind() == Comdat::Any; } - if (TM.isLargeGlobalObject(GO)) + if (TM.isLargeGlobalValue(GO)) Flags |= ELF::SHF_X86_64_LARGE; return {Group, IsComdat, Flags}; } |