aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Gaeke <gaeke@uiuc.edu>2003-06-26 18:02:30 +0000
committerBrian Gaeke <gaeke@uiuc.edu>2003-06-26 18:02:30 +0000
commit5e00157c5a96d1abea72f5dd3964173be5ace0f6 (patch)
treef76af2adf2ce019fe5120160bc53b3a3dddb0ab0
parent102f9015c61e9e7a84e1442705e85de19fe9b400 (diff)
downloadexternal_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.cpp21
-rw-r--r--lib/Target/X86/X86AsmPrinter.cpp21
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.