From abb477f66364fcaff1a79acf9d666dfdf6272a19 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 26 Jul 2009 03:06:11 +0000 Subject: [PATCH] put normal data into .data instead of .data.rel on elf systems. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77116 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Target/TargetAsmInfo.h | 2 +- lib/Target/ELFTargetAsmInfo.cpp | 32 ++++++++++------------------- test/CodeGen/X86/global-sections.ll | 17 ++++++++++++++- 3 files changed, 28 insertions(+), 23 deletions(-) diff --git a/include/llvm/Target/TargetAsmInfo.h b/include/llvm/Target/TargetAsmInfo.h index e1ac6969aa5..d5273a385b9 100644 --- a/include/llvm/Target/TargetAsmInfo.h +++ b/include/llvm/Target/TargetAsmInfo.h @@ -55,7 +55,7 @@ namespace llvm { /// Thread local data. ThreadData, ///< Initialized TLS data objects ThreadBSS ///< Uninitialized TLS data objects - } K; // This is private. + } K : 8; // This is private. // FIXME: Eliminate. Kind getKind() const { return K; } diff --git a/lib/Target/ELFTargetAsmInfo.cpp b/lib/Target/ELFTargetAsmInfo.cpp index da8ed73852b..880dfbc0a93 100644 --- a/lib/Target/ELFTargetAsmInfo.cpp +++ b/lib/Target/ELFTargetAsmInfo.cpp @@ -49,34 +49,24 @@ ELFTargetAsmInfo::ELFTargetAsmInfo(const TargetMachine &TM) const Section* ELFTargetAsmInfo::SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind) const { - if (isa(GV)) - return TextSection; - - const GlobalVariable *GVar = cast(GV); switch (Kind.getKind()) { - default: llvm_unreachable("Unsuported section kind for global"); - case SectionKind::BSS: - return getBSSSection_(); - case SectionKind::Data: - case SectionKind::DataRel: - return DataRelSection; - case SectionKind::DataRelLocal: - return DataRelLocalSection; - case SectionKind::DataRelRO: - return DataRelROSection; - case SectionKind::DataRelROLocal: - return DataRelROLocalSection; - case SectionKind::ROData: - return getReadOnlySection(); + default: llvm_unreachable("Unknown section kind"); + case SectionKind::Text: return TextSection; + case SectionKind::BSS: return getBSSSection_(); + case SectionKind::Data: return DataSection; + case SectionKind::DataRel: return DataRelSection; + case SectionKind::DataRelLocal: return DataRelLocalSection; + case SectionKind::DataRelRO: return DataRelROSection; + case SectionKind::DataRelROLocal: return DataRelROLocalSection; + case SectionKind::ROData: return getReadOnlySection(); case SectionKind::RODataMergeStr: - return MergeableStringSection(GVar); + return MergeableStringSection(cast(GV)); case SectionKind::RODataMergeConst: { - const Type *Ty = GVar->getInitializer()->getType(); + const Type *Ty = cast(GV)->getInitializer()->getType(); const TargetData *TD = TM.getTargetData(); return getSectionForMergableConstant(TD->getTypeAllocSize(Ty), 0); } case SectionKind::ThreadData: - // ELF targets usually support TLS stuff return TLSDataSection; case SectionKind::ThreadBSS: return TLSBSSSection; diff --git a/test/CodeGen/X86/global-sections.ll b/test/CodeGen/X86/global-sections.ll index ef31defeb53..ddfb3523910 100644 --- a/test/CodeGen/X86/global-sections.ll +++ b/test/CodeGen/X86/global-sections.ll @@ -39,4 +39,19 @@ ; DARWIN: .const ; DARWIN: _G4: -; .long 34 +; DARWIN: .long 34 + + +; int G5 = 47; +@G5 = global i32 47 + +; LINUX: .data +; LINUX: .globl G5 +; LINUX: G5: +; LINUX: .long 47 + +; DARWIN: .data +; DARWIN: .globl _G5 +; DARWIN: _G5: +; DARWIN: .long 47 + -- 2.34.1