From e61aff6df11113eba382e327754acb062ae056ce Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 21 Jul 2009 23:47:11 +0000 Subject: [PATCH] Now that RelocBehaviour() is never overloaded, it doesn't need to be virtual. Just inline it into its two current call sites in preparation for simplifying the code. llvm-svn: 76686 --- llvm/include/llvm/Target/TargetAsmInfo.h | 7 ------- llvm/lib/Target/ELFTargetAsmInfo.cpp | 8 +++++++- llvm/lib/Target/TargetAsmInfo.cpp | 12 +++--------- 3 files changed, 10 insertions(+), 17 deletions(-) diff --git a/llvm/include/llvm/Target/TargetAsmInfo.h b/llvm/include/llvm/Target/TargetAsmInfo.h index a8da6cb..e59b12a 100644 --- a/llvm/include/llvm/Target/TargetAsmInfo.h +++ b/llvm/include/llvm/Target/TargetAsmInfo.h @@ -601,13 +601,6 @@ namespace llvm { virtual SectionKind::Kind SectionKindForGlobal(const GlobalValue *GV) const; - /// RelocBehaviour - Describes how relocations should be treated when - /// selecting sections. Reloc::Global bit should be set if global - /// relocations should force object to be placed in read-write - /// sections. Reloc::Local bit should be set if local relocations should - /// force object to be placed in read-write sections. - virtual unsigned RelocBehaviour() const; - /// SectionFlagsForGlobal - This hook allows the target to select proper /// section flags either for given global or for section. // FIXME: Eliminate this. diff --git a/llvm/lib/Target/ELFTargetAsmInfo.cpp b/llvm/lib/Target/ELFTargetAsmInfo.cpp index bd2dd0a..8ace00a 100644 --- a/llvm/lib/Target/ELFTargetAsmInfo.cpp +++ b/llvm/lib/Target/ELFTargetAsmInfo.cpp @@ -57,7 +57,13 @@ ELFTargetAsmInfo::SectionKindForGlobal(const GlobalValue *GV) const { if (GVar->hasInitializer()) { Constant *C = GVar->getInitializer(); bool isConstant = GVar->isConstant(); - unsigned Reloc = RelocBehaviour(); + + + // By default - all relocations in PIC mode would force symbol to be + // placed in r/w section. + unsigned Reloc = (TM.getRelocationModel() != Reloc::Static ? + Reloc::LocalOrGlobal : Reloc::None); + if (Reloc != Reloc::None && C->ContainsRelocations(Reloc)) return (C->ContainsRelocations(Reloc::Global) ? (isConstant ? diff --git a/llvm/lib/Target/TargetAsmInfo.cpp b/llvm/lib/Target/TargetAsmInfo.cpp index 2cdaa74..e60855d 100644 --- a/llvm/lib/Target/TargetAsmInfo.cpp +++ b/llvm/lib/Target/TargetAsmInfo.cpp @@ -190,13 +190,6 @@ static bool isConstantString(const Constant *C) { return false; } -unsigned TargetAsmInfo::RelocBehaviour() const { - // By default - all relocations in PIC mode would force symbol to be - // placed in r/w section. - return (TM.getRelocationModel() != Reloc::Static ? - Reloc::LocalOrGlobal : Reloc::None); -} - SectionKind::Kind TargetAsmInfo::SectionKindForGlobal(const GlobalValue *GV) const { // Early exit - functions should be always in text sections. @@ -211,13 +204,14 @@ TargetAsmInfo::SectionKindForGlobal(const GlobalValue *GV) const { // Variable can be easily put to BSS section. return (isThreadLocal ? SectionKind::ThreadBSS : SectionKind::BSS); } else if (GVar->isConstant() && !isThreadLocal) { - // Now we know, that varible has initializer and it is constant. We need to + // Now we know, that variable has initializer and it is constant. We need to // check its initializer to decide, which section to output it into. Also // note, there is no thread-local r/o section. Constant *C = GVar->getInitializer(); if (C->ContainsRelocations(Reloc::LocalOrGlobal)) { // Decide, whether it is still possible to put symbol into r/o section. - unsigned Reloc = RelocBehaviour(); + unsigned Reloc = (TM.getRelocationModel() != Reloc::Static ? + Reloc::LocalOrGlobal : Reloc::None); // We already did a query for 'all' relocs, thus - early exits. if (Reloc == Reloc::LocalOrGlobal) -- 2.7.4