mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-16 12:24:03 +00:00
Revert r224935 "Refactor duplicated code. No intended functionality change."
This is affecting the behavior of some ObjC++ / AArch64 test cases on Darwin. Reverting to get the bots green while I track down the source of the changed behavior. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225311 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -573,6 +573,60 @@ const MCSection *TargetLoweringObjectFileMachO::getExplicitSectionGlobal(
|
||||
return S;
|
||||
}
|
||||
|
||||
bool TargetLoweringObjectFileMachO::isSectionAtomizableBySymbols(
|
||||
const MCSection &Section) const {
|
||||
const MCSectionMachO &SMO = static_cast<const MCSectionMachO&>(Section);
|
||||
|
||||
// Sections holding 1 byte strings are atomized based on the data
|
||||
// they contain.
|
||||
// Sections holding 2 byte strings require symbols in order to be
|
||||
// atomized.
|
||||
// There is no dedicated section for 4 byte strings.
|
||||
if (SMO.getKind().isMergeable1ByteCString())
|
||||
return false;
|
||||
|
||||
if (SMO.getSegmentName() == "__TEXT" &&
|
||||
SMO.getSectionName() == "__objc_classname" &&
|
||||
SMO.getType() == MachO::S_CSTRING_LITERALS)
|
||||
return false;
|
||||
|
||||
if (SMO.getSegmentName() == "__TEXT" &&
|
||||
SMO.getSectionName() == "__objc_methname" &&
|
||||
SMO.getType() == MachO::S_CSTRING_LITERALS)
|
||||
return false;
|
||||
|
||||
if (SMO.getSegmentName() == "__TEXT" &&
|
||||
SMO.getSectionName() == "__objc_methtype" &&
|
||||
SMO.getType() == MachO::S_CSTRING_LITERALS)
|
||||
return false;
|
||||
|
||||
if (SMO.getSegmentName() == "__DATA" &&
|
||||
SMO.getSectionName() == "__cfstring")
|
||||
return false;
|
||||
|
||||
// no_dead_strip sections are not atomized in practice.
|
||||
if (SMO.hasAttribute(MachO::S_ATTR_NO_DEAD_STRIP))
|
||||
return false;
|
||||
|
||||
switch (SMO.getType()) {
|
||||
default:
|
||||
return true;
|
||||
|
||||
// These sections are atomized at the element boundaries without using
|
||||
// symbols.
|
||||
case MachO::S_4BYTE_LITERALS:
|
||||
case MachO::S_8BYTE_LITERALS:
|
||||
case MachO::S_16BYTE_LITERALS:
|
||||
case MachO::S_LITERAL_POINTERS:
|
||||
case MachO::S_NON_LAZY_SYMBOL_POINTERS:
|
||||
case MachO::S_LAZY_SYMBOL_POINTERS:
|
||||
case MachO::S_MOD_INIT_FUNC_POINTERS:
|
||||
case MachO::S_MOD_TERM_FUNC_POINTERS:
|
||||
case MachO::S_INTERPOSING:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
const MCSection *TargetLoweringObjectFileMachO::
|
||||
SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
|
||||
Mangler &Mang, const TargetMachine &TM) const {
|
||||
|
Reference in New Issue
Block a user