diff options
author | Chris Lattner <sabre@nondot.org> | 2009-07-24 17:13:27 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-07-24 17:13:27 +0000 |
commit | 7c023d675951b51f85db862207a2a0e4c1057884 (patch) | |
tree | e1cd05eb5ee792867f9fef155ffecb2144ce4dc4 | |
parent | 2dcafe4b8f84cdb0d084421f11cdca08cd6b951d (diff) |
start refactoring pic16 section selection logic.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76977 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/PIC16/PIC16TargetAsmInfo.cpp | 25 | ||||
-rw-r--r-- | lib/Target/PIC16/PIC16TargetAsmInfo.h | 4 |
2 files changed, 13 insertions, 16 deletions
diff --git a/lib/Target/PIC16/PIC16TargetAsmInfo.cpp b/lib/Target/PIC16/PIC16TargetAsmInfo.cpp index c7708fa761..c2b519d893 100644 --- a/lib/Target/PIC16/PIC16TargetAsmInfo.cpp +++ b/lib/Target/PIC16/PIC16TargetAsmInfo.cpp @@ -249,13 +249,15 @@ const Section* PIC16TargetAsmInfo::SectionForGlobal(const GlobalValue *GV) const { // If GV has a sectin name or section address create that section now. if (GV->hasSection()) { - std::string SectName = GV->getSection(); - // If address for a variable is specified, get the address and create - // section. - std::string AddrStr = "Address="; - if (SectName.compare(0, AddrStr.length(), AddrStr) == 0) { - std::string SectAddr = SectName.substr(AddrStr.length()); - return CreateSectionForGlobal(GV, SectAddr); + if (const GlobalVariable *GVar = cast<GlobalVariable>(GV)) { + std::string SectName = GVar->getSection(); + // If address for a variable is specified, get the address and create + // section. + std::string AddrStr = "Address="; + if (SectName.compare(0, AddrStr.length(), AddrStr) == 0) { + std::string SectAddr = SectName.substr(AddrStr.length()); + return CreateSectionForGlobal(GVar, SectAddr); + } } } @@ -266,13 +268,8 @@ PIC16TargetAsmInfo::SectionForGlobal(const GlobalValue *GV) const { // Create a new section for global variable. If Addr is given then create // section at that address else create by name. const Section * -PIC16TargetAsmInfo::CreateSectionForGlobal(const GlobalValue *GV1, - std::string Addr) const { - const GlobalVariable *GV = dyn_cast<GlobalVariable>(GV1); - - if (!GV) - return TargetAsmInfo::SectionForGlobal(GV1); - +PIC16TargetAsmInfo::CreateSectionForGlobal(const GlobalVariable *GV, + const std::string &Addr) const { // See if this is an uninitialized global. const Constant *C = GV->getInitializer(); if (C->isNullValue()) diff --git a/lib/Target/PIC16/PIC16TargetAsmInfo.h b/lib/Target/PIC16/PIC16TargetAsmInfo.h index 8013bba9df..abbb504275 100644 --- a/lib/Target/PIC16/PIC16TargetAsmInfo.h +++ b/lib/Target/PIC16/PIC16TargetAsmInfo.h @@ -75,8 +75,8 @@ namespace llvm { const Section *CreateROSectionForGlobal(const GlobalVariable *GV, std::string Addr = "") const; virtual const Section *SelectSectionForGlobal(const GlobalValue *GV) const; - const Section * CreateSectionForGlobal(const GlobalValue *GV, - std::string Addr = "") const; + const Section *CreateSectionForGlobal(const GlobalVariable *GV, + const std::string &Addr = "") const; public: void SetSectionForGVs(Module &M); const std::vector<PIC16Section*> &getBSSSections() const { |