Remove SectionKind::Small*. This was only used on mips, and is apparently

a sad mistake that is regretted. :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76935 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2009-07-24 03:11:51 +00:00
parent 865763bf80
commit 013e6b6309
6 changed files with 4 additions and 114 deletions

View File

@ -50,12 +50,6 @@ namespace llvm {
RODataMergeStr, ///< Readonly data section: nul-terminated strings.
RODataMergeConst, ///< Readonly data section: fixed-length constants.
/// Small sections - These sections contains "short" data, and should be
/// placed "near" the GP.
SmallData, ///< Small data section
SmallBSS, ///< Small bss section
SmallROData, ///< Small readonly section
/// Thread local data.
ThreadData, ///< Initialized TLS data objects
ThreadBSS ///< Uninitialized TLS data objects
@ -64,13 +58,11 @@ namespace llvm {
static inline bool isReadOnly(Kind K) {
return (K == SectionKind::ROData ||
K == SectionKind::RODataMergeConst ||
K == SectionKind::RODataMergeStr ||
K == SectionKind::SmallROData);
K == SectionKind::RODataMergeStr);
}
static inline bool isBSS(Kind K) {
return (K == SectionKind::BSS ||
K == SectionKind::SmallBSS);
return K == SectionKind::BSS;
}
}

View File

@ -102,8 +102,6 @@ ELFTargetAsmInfo::SelectSectionForGlobal(const GlobalValue *GV) const {
} else {
switch (Kind) {
case SectionKind::Data:
case SectionKind::SmallData:
return DataSection;
case SectionKind::DataRel:
return DataRelSection;
case SectionKind::DataRelLocal:
@ -113,11 +111,8 @@ ELFTargetAsmInfo::SelectSectionForGlobal(const GlobalValue *GV) const {
case SectionKind::DataRelROLocal:
return DataRelROLocalSection;
case SectionKind::BSS:
case SectionKind::SmallBSS:
// ELF targets usually have BSS sections
return getBSSSection_();
case SectionKind::ROData:
case SectionKind::SmallROData:
return getReadOnlySection();
case SectionKind::RODataMergeStr:
return MergeableStringSection(GVar);

View File

@ -20,8 +20,6 @@ using namespace llvm;
MipsTargetAsmInfo::MipsTargetAsmInfo(const MipsTargetMachine &TM):
ELFTargetAsmInfo(TM) {
Subtarget = &TM.getSubtarget<MipsSubtarget>();
AlignmentIsInBytes = false;
COMMDirectiveTakesAlignment = true;
Data16bitsDirective = "\t.half\t";
@ -34,57 +32,13 @@ MipsTargetAsmInfo::MipsTargetAsmInfo(const MipsTargetMachine &TM):
BSSSection = "\t.section\t.bss";
CStringSection = ".rodata.str";
if (!Subtarget->hasABICall()) {
if (!TM.getSubtarget<MipsSubtarget>().hasABICall()) {
JumpTableDirective = "\t.word\t";
SmallDataSection = getNamedSection("\t.sdata", SectionFlags::Writeable);
SmallBSSSection = getNamedSection("\t.sbss",
SectionFlags::Writeable |
SectionFlags::BSS);
} else
} else {
JumpTableDirective = "\t.gpword\t";
}
SectionKind::Kind MipsTargetAsmInfo::
SectionKindForGlobal(const GlobalValue *GV) const {
SectionKind::Kind K = ELFTargetAsmInfo::SectionKindForGlobal(GV);
if (Subtarget->hasABICall())
return K;
if (K != SectionKind::Data && K != SectionKind::BSS &&
K != SectionKind::RODataMergeConst)
return K;
if (isa<GlobalVariable>(GV)) {
const TargetData *TD = TM.getTargetData();
unsigned Size = TD->getTypeAllocSize(GV->getType()->getElementType());
unsigned Threshold = Subtarget->getSSectionThreshold();
if (Size > 0 && Size <= Threshold) {
if (K == SectionKind::BSS)
return SectionKind::SmallBSS;
else
return SectionKind::SmallData;
}
}
return K;
}
const Section* MipsTargetAsmInfo::
SelectSectionForGlobal(const GlobalValue *GV) const {
SectionKind::Kind K = SectionKindForGlobal(GV);
const GlobalVariable *GVA = dyn_cast<GlobalVariable>(GV);
if (GVA && (!GVA->isWeakForLinker()))
switch (K) {
case SectionKind::SmallData:
return getSmallDataSection();
case SectionKind::SmallBSS:
return getSmallBSSSection();
default: break;
}
return ELFTargetAsmInfo::SelectSectionForGlobal(GV);
}

View File

@ -29,13 +29,6 @@ namespace llvm {
struct MipsTargetAsmInfo : public ELFTargetAsmInfo {
explicit MipsTargetAsmInfo(const MipsTargetMachine &TM);
/// SectionKindForGlobal - This hook allows the target to select proper
/// section kind used for global emission.
virtual SectionKind::Kind
SectionKindForGlobal(const GlobalValue *GV) const;
virtual const Section* SelectSectionForGlobal(const GlobalValue *GV) const;
private:
const MipsSubtarget *Subtarget;
};

View File

@ -257,12 +257,6 @@ TargetAsmInfo::SectionFlagsForGlobal(const GlobalValue *GV,
case SectionKind::RODataMergeConst:
// No additional flags here
break;
case SectionKind::SmallData:
case SectionKind::SmallBSS:
Flags |= SectionFlags::Writeable;
break;
case SectionKind::SmallROData:
break;
default:
llvm_unreachable("Unexpected section kind!");
}
@ -359,18 +353,12 @@ TargetAsmInfo::UniqueSectionForGlobal(const GlobalValue* GV,
return ".gnu.linkonce.d.rel.ro" + GV->getNameStr();
case SectionKind::DataRelROLocal:
return ".gnu.linkonce.d.rel.ro.local" + GV->getNameStr();
case SectionKind::SmallData:
return ".gnu.linkonce.s." + GV->getNameStr();
case SectionKind::BSS:
return ".gnu.linkonce.b." + GV->getNameStr();
case SectionKind::SmallBSS:
return ".gnu.linkonce.sb." + GV->getNameStr();
case SectionKind::ROData:
case SectionKind::RODataMergeConst:
case SectionKind::RODataMergeStr:
return ".gnu.linkonce.r." + GV->getNameStr();
case SectionKind::SmallROData:
return ".gnu.linkonce.s2." + GV->getNameStr();
case SectionKind::ThreadData:
return ".gnu.linkonce.td." + GV->getNameStr();
case SectionKind::ThreadBSS:

View File

@ -1,32 +0,0 @@
; RUN: llvm-as < %s | llc -mips-ssection-threshold=8 -march=mips -f -o %t0
; RUN: llvm-as < %s | llc -mips-ssection-threshold=0 -march=mips -f -o %t1
; RUN: grep {sdata} %t0 | count 1
; RUN: grep {sbss} %t0 | count 1
; RUN: grep {gp_rel} %t0 | count 2
; RUN: not grep {sdata} %t1
; RUN: not grep {sbss} %t1
; RUN: not grep {gp_rel} %t1
; RUN: grep {\%hi} %t1 | count 2
; RUN: grep {\%lo} %t1 | count 2
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:32:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64"
target triple = "mipsallegrexel-psp-elf"
%struct.anon = type { i32, i32 }
@s0 = global [8 x i8] c"AAAAAAA\00", align 4
@foo = global %struct.anon { i32 2, i32 3 }
@bar = global %struct.anon zeroinitializer
define i8* @A0() nounwind {
entry:
ret i8* getelementptr ([8 x i8]* @s0, i32 0, i32 0)
}
define i32 @A1() nounwind {
entry:
load i32* getelementptr (%struct.anon* @foo, i32 0, i32 0), align 8
load i32* getelementptr (%struct.anon* @foo, i32 0, i32 1), align 4
add i32 %1, %0
ret i32 %2
}