Revert r97211 and r97213 to get the build green again.
authorChandler Carruth <chandlerc@gmail.com>
Fri, 26 Feb 2010 08:43:09 +0000 (08:43 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Fri, 26 Feb 2010 08:43:09 +0000 (08:43 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97220 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PIC16/AsmPrinter/PIC16AsmPrinter.cpp
lib/Target/PIC16/PIC16ABINames.h
lib/Target/PIC16/PIC16ISelLowering.cpp
lib/Target/PIC16/PIC16Passes/PIC16Cloner.cpp

index acba3b20c1b71d97c242e0cda08146ddae639815..b015edd9e1d4db3ef1938fce52772c3f101e5f33 100644 (file)
@@ -158,7 +158,6 @@ bool PIC16AsmPrinter::runOnMachineFunction(MachineFunction &MF) {
 // printOperand - print operand of insn.
 void PIC16AsmPrinter::printOperand(const MachineInstr *MI, int opNum) {
   const MachineOperand &MO = MI->getOperand(opNum);
-  const Function *F = MI->getParent()->getParent()->getFunction();
 
   switch (MO.getType()) {
     case MachineOperand::MO_Register:
@@ -191,18 +190,19 @@ void PIC16AsmPrinter::printOperand(const MachineInstr *MI, int opNum) {
     }
     case MachineOperand::MO_ExternalSymbol: {
        const char *Sname = MO.getSymbolName();
-       std::string Printname = Sname;
 
-      // Intrinsic stuff needs to be renamed if we are printing IL fn. 
-      if (PAN::isIntrinsicStuff(Printname)) {
-        if (PAN::isISR(F->getSection())) {
-          Printname = PAN::Rename(Sname);
-        }
-        // Record these decls, we need to print them in asm as extern.
-        LibcallDecls.push_back(createESName(Printname));
+      // If its a libcall name, record it to decls section.
+      if (PAN::getSymbolTag(Sname) == PAN::LIBCALL)
+        LibcallDecls.push_back(Sname);
+
+      // Record a call to intrinsic to print the extern declaration for it.
+      std::string Sym = Sname;  
+      if (PAN::isMemIntrinsic(Sym)) {
+        Sym = PAN::addPrefix(Sym);
+        LibcallDecls.push_back(createESName(Sym));
       }
 
-      O << Printname;
+      O << Sym;
       break;
     }
     case MachineOperand::MO_MachineBasicBlock:
index 4c1a8da286c2cb495657d566e2b6d6626c25f7d1..e7c0ad58e160cb943bb248b64d5348dba337de94 100644 (file)
@@ -178,21 +178,18 @@ namespace llvm {
       return Func1 + tag;
     }
 
-    // Get the retval label for the given function.
     static std::string getRetvalLabel(const std::string &Func) {
       std::string Func1 = addPrefix(Func);
       std::string tag = getTagName(RET_LABEL);
       return Func1 + tag;
     }
 
-    // Get the argument label for the given function.
     static std::string getArgsLabel(const std::string &Func) {
       std::string Func1 = addPrefix(Func);
       std::string tag = getTagName(ARGS_LABEL);
       return Func1 + tag;
     }
 
-    // Get the tempdata label for the given function.
     static std::string getTempdataLabel(const std::string &Func) {
       std::string Func1 = addPrefix(Func);
       std::string tag = getTagName(TEMPS_LABEL);
@@ -266,7 +263,6 @@ namespace llvm {
       return false;
     }
 
-
     inline static bool isMemIntrinsic (const std::string &Name) {
       if (Name.compare("@memcpy") == 0 || Name.compare("@memset") == 0 ||
           Name.compare("@memmove") == 0) {
@@ -276,41 +272,6 @@ namespace llvm {
       return false;
     }
 
-    // Currently names of libcalls are assigned during TargetLowering
-    // object construction. There is no provision to change the when the 
-    // code for a function IL function being generated. 
-    // So we have to change these names while printing assembly.
-    // We need to do that mainly for names related to intrinsics. This
-    // function returns true if a name needs to be cloned. 
-    inline static bool isIntrinsicStuff(const std::string &Name) {
-      // Return true if the name contains LIBCALL marker, or a MemIntrinisc.
-      // these are mainly ARGS_LABEL, RET_LABEL, and the LIBCALL name itself.
-      if ((Name.find(getTagName(LIBCALL)) != std::string::npos) 
-          || isMemIntrinsic(Name))
-        return true;
-      return false;
-    }
-
-    // Rename the name for IL.
-    inline static std::string Rename(const std::string &Name) {
-      std::string Newname;
-      // If its a label (LIBCALL+Func+LABEL), change it to
-      // (LIBCALL+Func+IL+LABEL).
-      TAGS id = getSymbolTag(Name);
-      if (id == ARGS_LABEL || id == RET_LABEL) {
-        std::size_t pos = Name.find(getTagName(id));
-        Newname = Name.substr(0, pos) + ".IL" + getTagName(id);
-        return Newname;
-      }
-      // Else, just append IL to name. 
-      return Name + ".IL";
-   }
-    
-    
-   
-
     inline static bool isLocalToFunc (std::string &Func, std::string &Var) {
       if (! isLocalName(Var)) return false;
 
index e167bdad1c3acb21b6a5b5572928ef040e3f5584..d2fc8db91f7ed984cd86fde4ad8e3134bd89e636 100644 (file)
@@ -1527,24 +1527,10 @@ bool PIC16TargetLowering::NeedToConvertToMemOp(SDValue Op, unsigned &MemOp,
     return true;
 
   if (isDirectLoad(Op.getOperand(1))) {
-    if (Op.getOperand(1).hasOneUse()) {
-      // Legal and profitable folding check uses the NodeId of DAG nodes.
-      // This NodeId is assigned by topological order. Therefore first 
-      // assign topological order then perform legal and profitable check.
-      // Note:- Though this ordering is done before begining with legalization,
-      // newly added node during legalization process have NodeId=-1 (NewNode)
-      // therefore before performing any check proper ordering of the node is
-      // required.
-      DAG.AssignTopologicalOrder();
-
-      // Direct load operands are folded in binary operations. But before folding
-      // verify if this folding is legal. Fold only if it is legal otherwise
-      // convert this direct load to a separate memory operation.
-      if(ISel->IsLegalToFold(Op.getOperand(1), Op.getNode(), Op.getNode()))
-         return false;
-      else 
-         MemOp = 1; 
-    }
+    if (Op.getOperand(1).hasOneUse())
+      return false;
+    else 
+      MemOp = 1; 
   }
   return true;
 }  
index 01dbdca3b8fffe3f82932e89f658f80cff4278b5..b5cb605679390b0f2972b4a47850a5d7f920395b 100644 (file)
@@ -218,8 +218,8 @@ void PIC16Cloner::cloneSharedFunctions(CallGraphNode *CGN) {
        // Such a case may occur when the function has been declarated
        // in the C source code but its body exists in assembly file.
        if (!CalledF->isDeclaration()) {
-         Function *cf = cloneFunction(CalledF);
-         remapAllSites(CGN->getFunction(), CalledF, cf);
+         cloneFunction(CalledF);
+         // FIXME: remap all the call sites here.
        }  else {
          // It is called only from ISR. Still mark it as we need this info
          // in code gen while calling intrinsics.Function is not marked.