lower the ARM::CONSTPOOL_ENTRY pseudo op, giving us constant pool entries
like:

@ BB#1:
	.align	2
LCPI1_0:
	.long	L_.str-(LPC0+8)

Note that proper indentation of the label :)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84558 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp b/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
index 1394772..7e89b9f 100644
--- a/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
+++ b/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
@@ -1029,16 +1029,16 @@
 void ARMAsmPrinter::printMachineInstruction(const MachineInstr *MI) {
   ++EmittedInsts;
 
-  int Opc = MI->getOpcode();
-  if (Opc == ARM::CONSTPOOL_ENTRY)
-    EmitAlignment(2);
-
   // Call the autogenerated instruction printer routines.
   processDebugLoc(MI, true);
   
   if (EnableMCInst) {
     printInstructionThroughMCStreamer(MI);
   } else {
+    int Opc = MI->getOpcode();
+    if (Opc == ARM::CONSTPOOL_ENTRY)
+      EmitAlignment(2);
+    
     printInstruction(MI);
   }
   
@@ -1337,7 +1337,7 @@
     // Emit the label.
     // FIXME: MOVE TO SHARED PLACE.
     SmallString<60> Name;
-    int Id = (int)MI->getOperand(2).getImm();
+    unsigned Id = (unsigned)MI->getOperand(2).getImm();
     raw_svector_ostream(Name) << MAI->getPrivateGlobalPrefix() << "PC" << Id;
     OutStreamer.EmitLabel(OutContext.GetOrCreateSymbol(Name.str()));
     
@@ -1351,6 +1351,27 @@
     printMCInst(&AddInst);
     return;
   }
+  case ARM::CONSTPOOL_ENTRY: { // FIXME: Remove asm string from td file.
+    /// CONSTPOOL_ENTRY - This instruction represents a floating constant pool
+    /// in the function.  The first operand is the ID# for this instruction, the
+    /// second is the index into the MachineConstantPool that this is, the third
+    /// is the size in bytes of this constant pool entry.
+    unsigned LabelId = (unsigned)MI->getOperand(0).getImm();
+    unsigned CPIdx   = (unsigned)MI->getOperand(1).getIndex();
+
+    EmitAlignment(2);
+
+    O << MAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber()
+      << '_' << LabelId << ":\n";
+
+    const MachineConstantPoolEntry &MCPE = MCP->getConstants()[CPIdx];
+    if (MCPE.isMachineConstantPoolEntry())
+      EmitMachineConstantPoolValue(MCPE.Val.MachineCPVal);
+    else
+      EmitGlobalConstant(MCPE.Val.ConstVal);
+    
+    return;
+  }
   }
       
   MCInst TmpInst;