summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/DarwinTargetAsmInfo.cpp30
-rw-r--r--llvm/lib/Target/ELFTargetAsmInfo.cpp13
2 files changed, 18 insertions, 25 deletions
diff --git a/llvm/lib/Target/DarwinTargetAsmInfo.cpp b/llvm/lib/Target/DarwinTargetAsmInfo.cpp
index ad9dd6884f4..bc2189e1ef0 100644
--- a/llvm/lib/Target/DarwinTargetAsmInfo.cpp
+++ b/llvm/lib/Target/DarwinTargetAsmInfo.cpp
@@ -131,31 +131,33 @@ DarwinTargetAsmInfo::SelectSectionForGlobal(const GlobalValue *GV) const {
bool isNonStatic = TM.getRelocationModel() != Reloc::Static;
switch (Kind) {
- case SectionKind::Text:
+ case SectionKind::Text:
if (isWeak)
return TextCoalSection;
else
return TextSection;
- case SectionKind::Data:
- case SectionKind::ThreadData:
- case SectionKind::BSS:
- case SectionKind::ThreadBSS:
+ case SectionKind::Data:
+ case SectionKind::ThreadData:
+ case SectionKind::BSS:
+ case SectionKind::ThreadBSS:
if (cast<GlobalVariable>(GV)->isConstant())
return (isWeak ? ConstDataCoalSection : ConstDataSection);
else
return (isWeak ? DataCoalSection : DataSection);
- case SectionKind::ROData:
+ case SectionKind::ROData:
return (isWeak ? ConstDataCoalSection :
(isNonStatic ? ConstDataSection : getReadOnlySection()));
- case SectionKind::RODataMergeStr:
+ case SectionKind::RODataMergeStr:
return (isWeak ?
ConstTextCoalSection :
MergeableStringSection(cast<GlobalVariable>(GV)));
- case SectionKind::RODataMergeConst:
+ case SectionKind::RODataMergeConst: {
if (isWeak) return ConstDataCoalSection;
- return MergeableConstSection(cast<GlobalVariable>(GV)
- ->getInitializer()->getType());
- default:
+ const Type *Ty = cast<GlobalVariable>(GV)->getInitializer()->getType();
+ const TargetData *TD = TM.getTargetData();
+ return getSectionForMergableConstant(TD->getTypeAllocSize(Ty), 0);
+ }
+ default:
llvm_unreachable("Unsuported section kind for global");
}
@@ -179,12 +181,6 @@ DarwinTargetAsmInfo::MergeableStringSection(const GlobalVariable *GV) const {
return getReadOnlySection();
}
-const Section*
-DarwinTargetAsmInfo::MergeableConstSection(const Type *Ty) const {
- const TargetData *TD = TM.getTargetData();
- return getSectionForMergableConstant(TD->getTypeAllocSize(Ty), 0);
-}
-
const Section *
DarwinTargetAsmInfo::getSectionForMergableConstant(uint64_t Size,
unsigned ReloInfo) const {
diff --git a/llvm/lib/Target/ELFTargetAsmInfo.cpp b/llvm/lib/Target/ELFTargetAsmInfo.cpp
index fe006a3c607..cf4e3a2f148 100644
--- a/llvm/lib/Target/ELFTargetAsmInfo.cpp
+++ b/llvm/lib/Target/ELFTargetAsmInfo.cpp
@@ -121,8 +121,11 @@ ELFTargetAsmInfo::SelectSectionForGlobal(const GlobalValue *GV) const {
return getReadOnlySection();
case SectionKind::RODataMergeStr:
return MergeableStringSection(GVar);
- case SectionKind::RODataMergeConst:
- return MergeableConstSection(GVar->getInitializer()->getType());
+ case SectionKind::RODataMergeConst: {
+ const Type *Ty = GVar->getInitializer()->getType();
+ const TargetData *TD = TM.getTargetData();
+ return getSectionForMergableConstant(TD->getTypeAllocSize(Ty), 0);
+ }
case SectionKind::ThreadData:
// ELF targets usually support TLS stuff
return TLSDataSection;
@@ -166,12 +169,6 @@ ELFTargetAsmInfo::getSectionForMergableConstant(uint64_t Size,
const Section*
-ELFTargetAsmInfo::MergeableConstSection(const Type *Ty) const {
- const TargetData *TD = TM.getTargetData();
- return getSectionForMergableConstant(TD->getTypeAllocSize(Ty), 0);
-}
-
-const Section*
ELFTargetAsmInfo::MergeableStringSection(const GlobalVariable *GV) const {
const TargetData *TD = TM.getTargetData();
Constant *C = cast<GlobalVariable>(GV)->getInitializer();
OpenPOWER on IntegriCloud