From: Chris Lattner Date: Fri, 24 Jul 2009 17:13:27 +0000 (+0000) Subject: start refactoring pic16 section selection logic. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=7c023d675951b51f85db862207a2a0e4c1057884;p=oota-llvm.git start refactoring pic16 section selection logic. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76977 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/PIC16/PIC16TargetAsmInfo.cpp b/lib/Target/PIC16/PIC16TargetAsmInfo.cpp index c7708fa761f..c2b519d893d 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(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(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 8013bba9df9..abbb5042752 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 &getBSSSections() const {