[llvm-commits] [llvm] r71207 - in /llvm/trunk/lib/Target/PIC16: PIC16.h PIC16MemSelOpt.cpp PIC16TargetAsmInfo.cpp

Sanjiv Gupta sanjiv.gupta at microchip.com
Thu May 7 21:50:15 PDT 2009


Author: sgupta
Date: Thu May  7 23:50:14 2009
New Revision: 71207

URL: http://llvm.org/viewvc/llvm-project?rev=71207&view=rev
Log:
Moved pic16 naming functions to correct place.
No functionality change.

Modified:
    llvm/trunk/lib/Target/PIC16/PIC16.h
    llvm/trunk/lib/Target/PIC16/PIC16MemSelOpt.cpp
    llvm/trunk/lib/Target/PIC16/PIC16TargetAsmInfo.cpp

Modified: llvm/trunk/lib/Target/PIC16/PIC16.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PIC16/PIC16.h?rev=71207&r1=71206&r2=71207&view=diff

==============================================================================
--- llvm/trunk/lib/Target/PIC16/PIC16.h (original)
+++ llvm/trunk/lib/Target/PIC16/PIC16.h Thu May  7 23:50:14 2009
@@ -87,46 +87,93 @@
       
       FRAME_SECTION,
       AUTOS_SECTION
-   };
+    };
 
-  };
+    inline static const char *getIDName(IDs id) {
+      switch (id) {
+      default: assert(0 && "Unknown id");
+      case PREFIX_SYMBOL:    return "@";
+      case FUNC_AUTOS:       return ".auto.";
+      case FUNC_FRAME:       return ".frame.";
+      case FUNC_TEMPS:       return ".temp.";
+      case FUNC_ARGS:       return ".args.";
+      case FUNC_RET:       return ".ret.";
+      case FRAME_SECTION:       return "fpdata";
+      case AUTOS_SECTION:       return "fadata";
+      }
+    }
+
+    inline static IDs getID(const std::string &Sym) {
+      if (Sym.find(getIDName(FUNC_TEMPS)))
+        return FUNC_TEMPS;
+
+      if (Sym.find(getIDName(FUNC_FRAME)))
+        return FUNC_FRAME;
+
+      if (Sym.find(getIDName(FUNC_RET)))
+        return FUNC_RET;
+
+      if (Sym.find(getIDName(FUNC_ARGS)))
+        return FUNC_ARGS;
+
+      if (Sym.find(getIDName(FUNC_AUTOS)))
+        return FUNC_AUTOS;
 
-  inline static const char *getIDName(PIC16ABINames::IDs id) {
-    switch (id) {
-    default: assert(0 && "Unknown id");
-    case PIC16ABINames::PREFIX_SYMBOL:    return "@";
-    case PIC16ABINames::FUNC_AUTOS:       return ".auto.";
-    case PIC16ABINames::FUNC_FRAME:       return ".frame.";
-    case PIC16ABINames::FUNC_TEMPS:       return ".temp.";
-    case PIC16ABINames::FUNC_ARGS:       return ".args.";
-    case PIC16ABINames::FUNC_RET:       return ".ret.";
-    case PIC16ABINames::FRAME_SECTION:       return "fpdata";
-    case PIC16ABINames::AUTOS_SECTION:       return "fadata";
+      if (Sym.find(getIDName(LIBCALL)))
+        return LIBCALL;
+
+      // It does not have any ID. So its a global.
+      assert (0 && "Could not determine ID symbol type");
     }
-  }
 
-  inline static PIC16ABINames::IDs getID(const std::string &Sym) {
-    if (Sym.find(getIDName(PIC16ABINames::FUNC_TEMPS)))
-     return PIC16ABINames::FUNC_TEMPS;
+    // Get func name from a mangled name.
+    // In all cases func name is the first component before a '.'.
+    static inline std::string getFuncNameForSym(const std::string &Sym) {
+      const char *prefix = getIDName (PREFIX_SYMBOL);
+
+      // If this name has a prefix, func name start after prfix in that case.
+      size_t func_name_start = 0;
+      if (Sym.find(prefix, 0, strlen(prefix)) != std::string::npos)
+        func_name_start = strlen(prefix);
 
-    if (Sym.find(getIDName(PIC16ABINames::FUNC_FRAME)))
-     return PIC16ABINames::FUNC_FRAME;
+      // Position of the . after func name. That's where func name ends.
+      size_t func_name_end = Sym.find ('.', func_name_start);
 
-    if (Sym.find(getIDName(PIC16ABINames::FUNC_RET)))
-     return PIC16ABINames::FUNC_RET;
+      return Sym.substr (func_name_start, func_name_end);
+    }
 
-    if (Sym.find(getIDName(PIC16ABINames::FUNC_ARGS)))
-     return PIC16ABINames::FUNC_ARGS;
+    // Form a section name given the section type and func name.
+    static std::string
+    getSectionNameForFunc (const std::string &Fname, const IDs sec_id) {
+      std::string sec_id_string = getIDName(sec_id);
+      return sec_id_string + "." + Fname + ".#";
+    }
 
-    if (Sym.find(getIDName(PIC16ABINames::FUNC_AUTOS)))
-     return PIC16ABINames::FUNC_AUTOS;
+    // Get the section for the given external symbol names.
+    // This tries to find the type (ID) of the symbol from its mangled name
+    // and return appropriate section name for it.
+    static inline std::string getSectionNameForSym(const std::string &Sym) {
+      std::string SectionName;
+ 
+      IDs id = getID (Sym);
+      std::string Fname = getFuncNameForSym (Sym);
+
+      switch (id) {
+        default : assert (0 && "Could not determine external symbol type");
+        case FUNC_FRAME:
+        case FUNC_RET:
+        case FUNC_TEMPS:
+        case FUNC_ARGS:  {
+          return getSectionNameForFunc (Fname, FRAME_SECTION);
+        }
+        case FUNC_AUTOS: {
+          return getSectionNameForFunc (Fname, AUTOS_SECTION);
+        }
+      }
+    }
+  }; // class PIC16ABINames.
 
-    if (Sym.find(getIDName(PIC16ABINames::LIBCALL)))
-     return PIC16ABINames::LIBCALL;
 
-    // It does not have any ID. So its a global.
-    assert (0 && "Could not determine ID symbol type");
-  }
 
 
   inline static const char *PIC16CondCodeToString(PIC16CC::CondCodes CC) {

Modified: llvm/trunk/lib/Target/PIC16/PIC16MemSelOpt.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PIC16/PIC16MemSelOpt.cpp?rev=71207&r1=71206&r2=71207&view=diff

==============================================================================
--- llvm/trunk/lib/Target/PIC16/PIC16MemSelOpt.cpp (original)
+++ llvm/trunk/lib/Target/PIC16/PIC16MemSelOpt.cpp Thu May  7 23:50:14 2009
@@ -145,7 +145,7 @@
     // External Symbol is generated for temp data and arguments. They are
     // in fpdata.<functionname>.# section.
     std::string Sym = Op.getSymbolName();
-    NewBank = getSectionNameForSym(Sym);
+    NewBank = PIC16ABINames::getSectionNameForSym(Sym);
   }
  
   // If the previous and new section names are same, we don't need to

Modified: llvm/trunk/lib/Target/PIC16/PIC16TargetAsmInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PIC16/PIC16TargetAsmInfo.cpp?rev=71207&r1=71206&r2=71207&view=diff

==============================================================================
--- llvm/trunk/lib/Target/PIC16/PIC16TargetAsmInfo.cpp (original)
+++ llvm/trunk/lib/Target/PIC16/PIC16TargetAsmInfo.cpp Thu May  7 23:50:14 2009
@@ -192,7 +192,7 @@
     // variable and should not be printed in global data section.
     std::string name = I->getName();
     if (name.find(".auto.") != std::string::npos
-      || name.find(".arg.") != std::string::npos)
+      || name.find(".args.") != std::string::npos)
       continue;
     int AddrSpace = I->getType()->getAddressSpace();
 
@@ -202,58 +202,6 @@
 }
 
 
-// Helper routine.
-// Func name starts after prefix and followed by a .
-static std::string getFuncNameForSym(const std::string &Sym, 
-                                      PIC16ABINames::IDs PrefixType) {
-
-  const char *prefix = getIDName (PIC16ABINames::PREFIX_SYMBOL);
-
-  // This name may or may not start with prefix;
-  // Func names start after prfix in that case.
-  size_t func_name_start = 0;
-  if (Sym.find(prefix, 0, strlen(prefix)) != std::string::npos)
-    func_name_start = strlen(prefix);
-
-  // Position of the . after func name.
-  size_t func_name_end = Sym.find ('.', func_name_start);
-
-  return Sym.substr (func_name_start, func_name_end);
-}
-
-// Helper routine to create a section name given the section prefix
-// and func name.
-static std::string
-getSectionNameForFunc (const std::string &Fname,
-                       const PIC16ABINames::IDs sec_id) {
-  std::string sec_id_string = getIDName (sec_id);
-  return sec_id_string + "." + Fname + ".#";
-}
-
-
-// Get the section for the given external symbol names.
-// This function is meant for only mangled external symbol names.
-std::string 
-llvm::getSectionNameForSym(const std::string &Sym) {
-  std::string SectionName;
-
-  PIC16ABINames::IDs id = getID (Sym);
-  std::string Fname = getFuncNameForSym (Sym, id);
-
-  switch (id) {
-    default : assert (0 && "Could not determine external symbol type");
-    case PIC16ABINames::FUNC_FRAME: 
-    case PIC16ABINames::FUNC_RET: 
-    case PIC16ABINames::FUNC_TEMPS: 
-    case PIC16ABINames::FUNC_ARGS:  {
-      return getSectionNameForFunc (Fname, PIC16ABINames::FRAME_SECTION);
-    }
-    case PIC16ABINames::FUNC_AUTOS: { 
-      return getSectionNameForFunc (Fname, PIC16ABINames::AUTOS_SECTION);
-    }
-  }
-}
-
 PIC16TargetAsmInfo::~PIC16TargetAsmInfo() {
   
   for (unsigned i = 0; i < BSSSections.size(); i++) {





More information about the llvm-commits mailing list