start refactoring pic16 section selection logic.
authorChris Lattner <sabre@nondot.org>
Fri, 24 Jul 2009 17:13:27 +0000 (17:13 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 24 Jul 2009 17:13:27 +0000 (17:13 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76977 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PIC16/PIC16TargetAsmInfo.cpp
lib/Target/PIC16/PIC16TargetAsmInfo.h

index c7708fa761f25f838a0c99384b5bb6732ec9b6de..c2b519d893d2d229e4727586f9ae509aa5535399 100644 (file)
@@ -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())
index 8013bba9df9bc3b1e2f55e1daed934e3e0f51fa2..abbb5042752a2968d0d621c08e5c50b581a71f1c 100644 (file)
@@ -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 {