summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2006-06-29 00:33:06 +0000
committerEvan Cheng <evan.cheng@apple.com>2006-06-29 00:33:06 +0000
commitd3f69811740d526cce7ef138cbcaaf45249db09b (patch)
treeab7f33939f3bb828f82f31d3a86e58569cf7fcd8 /lib
parent2d2cec1e9e93a388bd8448f4bad661ac89a49de3 (diff)
downloadllvm-d3f69811740d526cce7ef138cbcaaf45249db09b.tar.gz
llvm-d3f69811740d526cce7ef138cbcaaf45249db09b.tar.bz2
llvm-d3f69811740d526cce7ef138cbcaaf45249db09b.tar.xz
Move .literal4 and .literal8 support into AsmPrinter.cpp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28978 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Target/X86/X86AsmPrinter.cpp53
-rwxr-xr-xlib/Target/X86/X86AsmPrinter.h6
2 files changed, 2 insertions, 57 deletions
diff --git a/lib/Target/X86/X86AsmPrinter.cpp b/lib/Target/X86/X86AsmPrinter.cpp
index 35ecbc1fe3..920d8d4468 100644
--- a/lib/Target/X86/X86AsmPrinter.cpp
+++ b/lib/Target/X86/X86AsmPrinter.cpp
@@ -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.
diff --git a/lib/Target/X86/X86AsmPrinter.h b/lib/Target/X86/X86AsmPrinter.h
index c01dd8441f..eee956cd43 100755
--- a/lib/Target/X86/X86AsmPrinter.h
+++ b/lib/Target/X86/X86AsmPrinter.h
@@ -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