diff options
author | Evan Cheng <evan.cheng@apple.com> | 2006-06-29 00:33:06 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2006-06-29 00:33:06 +0000 |
commit | d3f69811740d526cce7ef138cbcaaf45249db09b (patch) | |
tree | ab7f33939f3bb828f82f31d3a86e58569cf7fcd8 /lib | |
parent | 2d2cec1e9e93a388bd8448f4bad661ac89a49de3 (diff) | |
download | llvm-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.cpp | 53 | ||||
-rwxr-xr-x | lib/Target/X86/X86AsmPrinter.h | 6 |
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 |