PTX: Use external symbols to keep track of params and locals. This also fixes
a couple of outstanding issues with frame objects occuring as instruction
operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140616 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/PTX/PTXAsmPrinter.cpp b/lib/Target/PTX/PTXAsmPrinter.cpp
index c09a762..cd82d56 100644
--- a/lib/Target/PTX/PTXAsmPrinter.cpp
+++ b/lib/Target/PTX/PTXAsmPrinter.cpp
@@ -66,10 +66,6 @@
   void printOperand(const MachineInstr *MI, int opNum, raw_ostream &OS);
   void printMemOperand(const MachineInstr *MI, int opNum, raw_ostream &OS,
                        const char *Modifier = 0);
-  void printParamOperand(const MachineInstr *MI, int opNum, raw_ostream &OS,
-                         const char *Modifier = 0);
-  void printLocalOperand(const MachineInstr *MI, int opNum, raw_ostream &OS,
-                         const char *Modifier = 0);
   void printReturnOperand(const MachineInstr *MI, int opNum, raw_ostream &OS,
                           const char *Modifier = 0);
   void printPredicateOperand(const MachineInstr *MI, raw_ostream &O);
@@ -415,6 +411,9 @@
     case MachineOperand::MO_Register:
       OS << MFI->getRegisterName(MO.getReg());
       break;
+    case MachineOperand::MO_ExternalSymbol:
+      OS << MO.getSymbolName();
+      break;
     case MachineOperand::MO_FPImmediate:
       APInt constFP = MO.getFPImm()->getValueAPF().bitcastToAPInt();
       bool  isFloat = MO.getFPImm()->getType()->getTypeID() == Type::FloatTyID;
@@ -451,29 +450,12 @@
   printOperand(MI, opNum+1, OS);
 }
 
-void PTXAsmPrinter::printParamOperand(const MachineInstr *MI, int opNum,
-                                      raw_ostream &OS, const char *Modifier) {
-  const PTXMachineFunctionInfo *MFI = MI->getParent()->getParent()->
-                                      getInfo<PTXMachineFunctionInfo>();
-  OS << MFI->getParamManager().getParamName(MI->getOperand(opNum).getImm());
-}
-
 void PTXAsmPrinter::printReturnOperand(const MachineInstr *MI, int opNum,
                                        raw_ostream &OS, const char *Modifier) {
   //OS << RETURN_PREFIX << (int) MI->getOperand(opNum).getImm() + 1;
   OS << "__ret";
 }
 
-void PTXAsmPrinter::printLocalOperand(const MachineInstr *MI, int opNum,
-                                      raw_ostream &OS, const char *Modifier) {
-  OS << "__local" << MI->getOperand(opNum).getImm();
-
-  if (MI->getOperand(opNum+1).isImm() && MI->getOperand(opNum+1).getImm() != 0){
-    OS << "+";
-    printOperand(MI, opNum+1, OS);
-  }
-}
-
 void PTXAsmPrinter::EmitVariableDeclaration(const GlobalVariable *gv) {
   // Check to see if this is a special global used by LLVM, if so, emit it.
   if (EmitSpecialLLVMGlobal(gv))
@@ -702,7 +684,7 @@
     } else {
       O << ", ";
     }
-    printParamOperand(MI, Index, O);
+    printOperand(MI, Index, O);
     Index++;
   }
 
@@ -718,7 +700,7 @@
   Index++;
 
   while (Index < MI->getNumOperands()) {
-    printParamOperand(MI, Index, O);
+    printOperand(MI, Index, O);
     if (Index < MI->getNumOperands()-1) {
       O << ", ";
     }