mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-27 02:31:09 +00:00
Switch to using the shared constant pool printer, along with using shorter
CPI ids git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24467 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6053010f9c
commit
d939f6c85d
@ -29,7 +29,7 @@ bool X86ATTAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
|
||||
O << "\n\n";
|
||||
|
||||
// Print out constants referenced by the function
|
||||
printConstantPool(MF.getConstantPool());
|
||||
EmitConstantPool(MF.getConstantPool());
|
||||
|
||||
// Print out labels for the function.
|
||||
SwitchSection("\t.text\n", MF.getFunction());
|
||||
@ -176,7 +176,7 @@ void X86ATTAsmPrinter::printMemReference(const MachineInstr *MI, unsigned Op){
|
||||
O << "]";
|
||||
return;
|
||||
} else if (BaseReg.isConstantPoolIndex()) {
|
||||
O << PrivateGlobalPrefix << "CPI" << CurrentFnName << "_"
|
||||
O << PrivateGlobalPrefix << "CPI" << getFunctionNumber() << "_"
|
||||
<< BaseReg.getConstantPoolIndex();
|
||||
if (DispSpec.getImmedValue())
|
||||
O << "+" << DispSpec.getImmedValue();
|
||||
|
@ -68,37 +68,12 @@ bool X86SharedAsmPrinter::doInitialization(Module& M) {
|
||||
Data64bitsDirective = 0; // we can't emit a 64-bit unit
|
||||
ZeroDirective = "\t.space\t"; // ".space N" emits N zeros.
|
||||
PrivateGlobalPrefix = "L"; // Marker for constant pool idxs
|
||||
ConstantPoolSection = "\t.const\n";
|
||||
}
|
||||
|
||||
return AsmPrinter::doInitialization(M);
|
||||
}
|
||||
|
||||
/// printConstantPool - Print to the current output stream assembly
|
||||
/// representations of the constants in the constant pool MCP. This is
|
||||
/// used to print out constants which have been "spilled to memory" by
|
||||
/// the code generator.
|
||||
///
|
||||
void X86SharedAsmPrinter::printConstantPool(MachineConstantPool *MCP) {
|
||||
const std::vector<Constant*> &CP = MCP->getConstants();
|
||||
const TargetData &TD = TM.getTargetData();
|
||||
|
||||
if (CP.empty()) return;
|
||||
|
||||
SwitchSection(forDarwin ? "\t.const\n" : "\t.section .rodata\n", 0);
|
||||
|
||||
for (unsigned i = 0, e = CP.size(); i != e; ++i) {
|
||||
// FIXME: force doubles to be naturally aligned. We should handle this
|
||||
// more correctly in the future.
|
||||
if (CP[i]->getType() == Type::DoubleTy)
|
||||
EmitAlignment(3);
|
||||
else
|
||||
EmitAlignment(TD.getTypeAlignmentShift(CP[i]->getType()));
|
||||
O << PrivateGlobalPrefix << "CPI" << CurrentFnName << "_" << i
|
||||
<< ":\t\t\t\t\t" << CommentString << *CP[i] << "\n";
|
||||
EmitGlobalConstant(CP[i]);
|
||||
}
|
||||
}
|
||||
|
||||
bool X86SharedAsmPrinter::doFinalization(Module &M) {
|
||||
const TargetData &TD = TM.getTargetData();
|
||||
|
||||
|
@ -32,7 +32,6 @@ struct X86SharedAsmPrinter : public AsmPrinter {
|
||||
: AsmPrinter(O, TM), forCygwin(false), forDarwin(false) { }
|
||||
|
||||
bool doInitialization(Module &M);
|
||||
void printConstantPool(MachineConstantPool *MCP);
|
||||
bool doFinalization(Module &M);
|
||||
|
||||
bool forCygwin;
|
||||
|
@ -29,7 +29,7 @@ bool X86IntelAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
|
||||
O << "\n\n";
|
||||
|
||||
// Print out constants referenced by the function
|
||||
printConstantPool(MF.getConstantPool());
|
||||
EmitConstantPool(MF.getConstantPool());
|
||||
|
||||
// Print out labels for the function.
|
||||
SwitchSection("\t.text\n", MF.getFunction());
|
||||
@ -143,7 +143,7 @@ void X86IntelAsmPrinter::printMemReference(const MachineInstr *MI, unsigned Op){
|
||||
O << "]";
|
||||
return;
|
||||
} else if (BaseReg.isConstantPoolIndex()) {
|
||||
O << "[" << PrivateGlobalPrefix << "CPI" << CurrentFnName << "_"
|
||||
O << "[" << PrivateGlobalPrefix << "CPI" << getFunctionNumber() << "_"
|
||||
<< BaseReg.getConstantPoolIndex();
|
||||
|
||||
if (IndexReg.getReg()) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user