diff options
author | Brian Gaeke <gaeke@uiuc.edu> | 2003-06-26 18:02:30 +0000 |
---|---|---|
committer | Brian Gaeke <gaeke@uiuc.edu> | 2003-06-26 18:02:30 +0000 |
commit | 5e00157c5a96d1abea72f5dd3964173be5ace0f6 (patch) | |
tree | f76af2adf2ce019fe5120160bc53b3a3dddb0ab0 | |
parent | 102f9015c61e9e7a84e1442705e85de19fe9b400 (diff) | |
download | external_llvm-5e00157c5a96d1abea72f5dd3964173be5ace0f6.zip external_llvm-5e00157c5a96d1abea72f5dd3964173be5ace0f6.tar.gz external_llvm-5e00157c5a96d1abea72f5dd3964173be5ace0f6.tar.bz2 |
Number constants from constant pool as CPIf_i where f is the function index
and i is the constant pool index.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6920 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/X86/Printer.cpp | 21 | ||||
-rw-r--r-- | lib/Target/X86/X86AsmPrinter.cpp | 21 |
2 files changed, 22 insertions, 20 deletions
diff --git a/lib/Target/X86/Printer.cpp b/lib/Target/X86/Printer.cpp index 36b3d3e..75cfcd9 100644 --- a/lib/Target/X86/Printer.cpp +++ b/lib/Target/X86/Printer.cpp @@ -24,16 +24,12 @@ #include "llvm/Module.h" namespace { - - + unsigned fnIndex; std::set<const Value*> MangledGlobals; struct Printer : public MachineFunctionPass { - std::ostream &O; - unsigned ConstIdx; - Printer(std::ostream &o) : O(o), ConstIdx(0) {} + Printer(std::ostream &o) : O(o) {} const TargetData *TD; - virtual const char *getPassName() const { return "X86 Assembly Printer"; } @@ -393,11 +389,11 @@ void Printer::printConstantPool(MachineConstantPool *MCP){ for (unsigned i = 0, e = CP.size(); i != e; ++i) { O << "\t.section .rodata\n"; - O << "\t.align " << (unsigned)TD->getTypeAlignment(CP[i]->getType()) << "\n"; - O << ".CPI" << i+ConstIdx << ":\t\t\t\t\t#" << *CP[i] << "\n"; + O << "\t.align " << (unsigned)TD->getTypeAlignment(CP[i]->getType()) + << "\n"; + O << ".CPI" << fnIndex << "_" << i << ":\t\t\t\t\t#" << *CP[i] << "\n"; printConstantValueOnly (CP[i]); } - ConstIdx += CP.size(); // Don't recycle constant pool index numbers } /// runOnMachineFunction - This uses the X86InstructionInfo::print method @@ -438,6 +434,7 @@ bool Printer::runOnMachineFunction(MachineFunction &MF) { } } + fnIndex++; // We didn't modify anything. return false; } @@ -515,7 +512,8 @@ static void printMemReference(std::ostream &O, const MachineInstr *MI, O << "]"; return; } else if (MI->getOperand(Op).isConstantPoolIndex()) { - O << "[.CPI" << MI->getOperand(Op).getConstantPoolIndex(); + O << "[.CPI" << fnIndex << "_" + << MI->getOperand(Op).getConstantPoolIndex(); if (MI->getOperand(Op+3).getImmedValue()) O << " + " << MI->getOperand(Op+3).getImmedValue(); O << "]"; @@ -823,6 +821,9 @@ bool Printer::doInitialization(Module &M) // with no % decorations on register names. O << "\t.intel_syntax noprefix\n"; + // Start function index at 0 + fnIndex = 0; + // Ripped from CWriter: // Calculate which global values have names that will collide when we throw // away type information. diff --git a/lib/Target/X86/X86AsmPrinter.cpp b/lib/Target/X86/X86AsmPrinter.cpp index 36b3d3e..75cfcd9 100644 --- a/lib/Target/X86/X86AsmPrinter.cpp +++ b/lib/Target/X86/X86AsmPrinter.cpp @@ -24,16 +24,12 @@ #include "llvm/Module.h" namespace { - - + unsigned fnIndex; std::set<const Value*> MangledGlobals; struct Printer : public MachineFunctionPass { - std::ostream &O; - unsigned ConstIdx; - Printer(std::ostream &o) : O(o), ConstIdx(0) {} + Printer(std::ostream &o) : O(o) {} const TargetData *TD; - virtual const char *getPassName() const { return "X86 Assembly Printer"; } @@ -393,11 +389,11 @@ void Printer::printConstantPool(MachineConstantPool *MCP){ for (unsigned i = 0, e = CP.size(); i != e; ++i) { O << "\t.section .rodata\n"; - O << "\t.align " << (unsigned)TD->getTypeAlignment(CP[i]->getType()) << "\n"; - O << ".CPI" << i+ConstIdx << ":\t\t\t\t\t#" << *CP[i] << "\n"; + O << "\t.align " << (unsigned)TD->getTypeAlignment(CP[i]->getType()) + << "\n"; + O << ".CPI" << fnIndex << "_" << i << ":\t\t\t\t\t#" << *CP[i] << "\n"; printConstantValueOnly (CP[i]); } - ConstIdx += CP.size(); // Don't recycle constant pool index numbers } /// runOnMachineFunction - This uses the X86InstructionInfo::print method @@ -438,6 +434,7 @@ bool Printer::runOnMachineFunction(MachineFunction &MF) { } } + fnIndex++; // We didn't modify anything. return false; } @@ -515,7 +512,8 @@ static void printMemReference(std::ostream &O, const MachineInstr *MI, O << "]"; return; } else if (MI->getOperand(Op).isConstantPoolIndex()) { - O << "[.CPI" << MI->getOperand(Op).getConstantPoolIndex(); + O << "[.CPI" << fnIndex << "_" + << MI->getOperand(Op).getConstantPoolIndex(); if (MI->getOperand(Op+3).getImmedValue()) O << " + " << MI->getOperand(Op+3).getImmedValue(); O << "]"; @@ -823,6 +821,9 @@ bool Printer::doInitialization(Module &M) // with no % decorations on register names. O << "\t.intel_syntax noprefix\n"; + // Start function index at 0 + fnIndex = 0; + // Ripped from CWriter: // Calculate which global values have names that will collide when we throw // away type information. |