Move .literal4 and .literal8 support into AsmPrinter.cpp
authorEvan Cheng <evan.cheng@apple.com>
Thu, 29 Jun 2006 00:33:06 +0000 (00:33 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Thu, 29 Jun 2006 00:33:06 +0000 (00:33 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28978 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86AsmPrinter.cpp
lib/Target/X86/X86AsmPrinter.h

index 35ecbc1fe30d82a8b8d3f688a10f790839ef8811..920d8d4468ae4e8a92473015a41262c00de45c9c 100644 (file)
@@ -59,6 +59,8 @@ bool X86SharedAsmPrinter::doInitialization(Module &M) {
     PrivateGlobalPrefix = "L";     // Marker for constant pool idxs
     ConstantPoolSection = "\t.const\n";
     JumpTableSection = "\t.const\n"; // FIXME: depends on PIC mode
+    FourByteConstantSection = "\t.literal4\n";
+    EightByteConstantSection = "\t.literal8\n";
     LCOMMDirective = "\t.lcomm\t";
     COMMDirectiveTakesAlignment = false;
     HasDotTypeDotSizeDirective = false;
@@ -222,57 +224,6 @@ bool X86SharedAsmPrinter::doFinalization(Module &M) {
   return false; // success
 }
 
-void X86SharedAsmPrinter::EmitConstantPool(MachineConstantPool *MCP) {
-  if (Subtarget->TargetType != X86Subtarget::isDarwin) {
-    AsmPrinter::EmitConstantPool(MCP);
-    return;
-  }
-
-  const std::vector<MachineConstantPoolEntry> &CP = MCP->getConstants();
-  if (CP.empty()) return;
-
-  std::vector<std::pair<MachineConstantPoolEntry,unsigned> > FloatCPs;
-  std::vector<std::pair<MachineConstantPoolEntry,unsigned> > DoubleCPs;
-  std::vector<std::pair<MachineConstantPoolEntry,unsigned> > OtherCPs;
-  for (unsigned i = 0, e = CP.size(); i != e; ++i) {
-    MachineConstantPoolEntry CPE = CP[i];
-    const Constant *CV = CPE.Val;
-    const Type *Ty = CV->getType();
-    if (Ty->getTypeID() == Type::FloatTyID)
-      FloatCPs.push_back(std::make_pair(CPE, i));
-    else if (Ty->getTypeID() == Type::DoubleTyID)
-      DoubleCPs.push_back(std::make_pair(CPE, i));
-    else
-      OtherCPs.push_back(std::make_pair(CPE, i));
-  }
-  EmitConstantPool(MCP, FloatCPs,  "\t.literal4");
-  EmitConstantPool(MCP, DoubleCPs, "\t.literal8");
-  EmitConstantPool(MCP, OtherCPs,  ConstantPoolSection);
-}
-
-void
-X86SharedAsmPrinter::EmitConstantPool(MachineConstantPool *MCP,
-                 std::vector<std::pair<MachineConstantPoolEntry,unsigned> > &CP,
-                                      const char *Section) {
-  if (CP.empty()) return;
-
-  SwitchToDataSection(Section, 0);
-  EmitAlignment(MCP->getConstantPoolAlignment());
-  for (unsigned i = 0, e = CP.size(); i != e; ++i) {
-    O << PrivateGlobalPrefix << "CPI" << getFunctionNumber() << '_'
-      << CP[i].second << ":\t\t\t\t\t" << CommentString << " ";
-    WriteTypeSymbolic(O, CP[i].first.Val->getType(), 0) << '\n';
-    EmitGlobalConstant(CP[i].first.Val);
-    if (i != e-1) {
-      unsigned EntSize =
-        TM.getTargetData()->getTypeSize(CP[i].first.Val->getType());
-      unsigned ValEnd = CP[i].first.Offset + EntSize;
-      // Emit inter-object padding for alignment.
-      EmitZeros(CP[i+1].first.Offset-ValEnd);
-    }
-  }
-}
-
 /// createX86CodePrinterPass - Returns a pass that prints the X86 assembly code
 /// for a MachineFunction to the given output stream, using the given target
 /// machine description.
index c01dd8441f5169d2eac53769fa6a659d9f27e4bb..eee956cd43b457c9a62da19367e0126563158e13 100755 (executable)
@@ -20,7 +20,6 @@
 #include "X86TargetMachine.h"
 #include "llvm/CodeGen/AsmPrinter.h"
 #include "llvm/CodeGen/DwarfWriter.h"
-#include "llvm/CodeGen/MachineConstantPool.h"
 #include "llvm/CodeGen/MachineDebugInfo.h"
 #include "llvm/ADT/Statistic.h"
 #include <set>
@@ -93,11 +92,6 @@ struct X86SharedAsmPrinter : public AsmPrinter {
        MI->getOperand(Op+3).isGlobalAddress() ||
        MI->getOperand(Op+3).isConstantPoolIndex());
   }
-
-  virtual void EmitConstantPool(MachineConstantPool *MCP);
-  void EmitConstantPool(MachineConstantPool *MCP,
-                std::vector<std::pair<MachineConstantPoolEntry, unsigned> > &CP,
-                        const char *Section);
 };
 
 } // end namespace llvm