diff options
| author | Evan Cheng <evan.cheng@apple.com> | 2006-06-28 07:55:24 +0000 |
|---|---|---|
| committer | Evan Cheng <evan.cheng@apple.com> | 2006-06-28 07:55:24 +0000 |
| commit | 0687b04455b0b559ec972ced988aac0dbbd30978 (patch) | |
| tree | 278c2647de6d3e178c09ebb0d13cba52ccd8a68b /llvm/lib/Target | |
| parent | 7f88856d95256c1d0b85e3d346f04d30d60b0304 (diff) | |
| download | bcm5719-llvm-0687b04455b0b559ec972ced988aac0dbbd30978.tar.gz bcm5719-llvm-0687b04455b0b559ec972ced988aac0dbbd30978.zip | |
Oops. Need to keep CP index.
llvm-svn: 28958
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/X86/X86AsmPrinter.cpp | 31 | ||||
| -rwxr-xr-x | llvm/lib/Target/X86/X86AsmPrinter.h | 2 |
2 files changed, 16 insertions, 17 deletions
diff --git a/llvm/lib/Target/X86/X86AsmPrinter.cpp b/llvm/lib/Target/X86/X86AsmPrinter.cpp index 5e35487a21e..233e4469473 100644 --- a/llvm/lib/Target/X86/X86AsmPrinter.cpp +++ b/llvm/lib/Target/X86/X86AsmPrinter.cpp @@ -231,21 +231,19 @@ void X86SharedAsmPrinter::EmitConstantPool(MachineConstantPool *MCP) { const std::vector<MachineConstantPoolEntry> &CP = MCP->getConstants(); if (CP.empty()) return; - std::vector<MachineConstantPoolEntry> FloatCPs; - std::vector<MachineConstantPoolEntry> DoubleCPs; - std::vector<MachineConstantPoolEntry> OtherCPs; - // const TargetData *TD = TM.getTargetData(); - // unsigned Align = MCP->getConstantPoolAlignment(); + 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(CPE); + FloatCPs.push_back(std::make_pair(CPE, i)); else if (Ty->getTypeID() == Type::DoubleTyID) - DoubleCPs.push_back(CPE); + DoubleCPs.push_back(std::make_pair(CPE, i)); else - OtherCPs.push_back(CPE); + OtherCPs.push_back(std::make_pair(CPE, i)); } EmitConstantPool(MCP, FloatCPs, "\t.literal4"); EmitConstantPool(MCP, DoubleCPs, "\t.literal8"); @@ -254,22 +252,23 @@ void X86SharedAsmPrinter::EmitConstantPool(MachineConstantPool *MCP) { void X86SharedAsmPrinter::EmitConstantPool(MachineConstantPool *MCP, - std::vector<MachineConstantPoolEntry> &CP, + 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() << '_' << i - << ":\t\t\t\t\t" << CommentString << " "; - WriteTypeSymbolic(O, CP[i].Val->getType(), 0) << '\n'; - EmitGlobalConstant(CP[i].Val); + 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].Val->getType()); - unsigned ValEnd = CP[i].Offset + EntSize; + 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].Offset-ValEnd); + EmitZeros(CP[i+1].first.Offset-ValEnd); } } } diff --git a/llvm/lib/Target/X86/X86AsmPrinter.h b/llvm/lib/Target/X86/X86AsmPrinter.h index 7c1b6244246..c01dd8441f5 100755 --- a/llvm/lib/Target/X86/X86AsmPrinter.h +++ b/llvm/lib/Target/X86/X86AsmPrinter.h @@ -96,7 +96,7 @@ struct X86SharedAsmPrinter : public AsmPrinter { virtual void EmitConstantPool(MachineConstantPool *MCP); void EmitConstantPool(MachineConstantPool *MCP, - std::vector<MachineConstantPoolEntry> &CP, + std::vector<std::pair<MachineConstantPoolEntry, unsigned> > &CP, const char *Section); }; |

