diff options
| author | Jim Laskey <jlaskey@mac.com> | 2006-09-06 18:34:40 +0000 |
|---|---|---|
| committer | Jim Laskey <jlaskey@mac.com> | 2006-09-06 18:34:40 +0000 |
| commit | a6211dcdadea7a7e1dfb79137577a3bc1b9c7671 (patch) | |
| tree | 6c006ec3d241fab79a222a5f657cbbfc208c1e1f /llvm/lib/Target/ARM | |
| parent | abd8bcbe5e662138da593e9bb788511ea8badeef (diff) | |
| download | bcm5719-llvm-a6211dcdadea7a7e1dfb79137577a3bc1b9c7671.tar.gz bcm5719-llvm-a6211dcdadea7a7e1dfb79137577a3bc1b9c7671.zip | |
Separate target specific asm properties from the asm printers.
llvm-svn: 30126
Diffstat (limited to 'llvm/lib/Target/ARM')
| -rw-r--r-- | llvm/lib/Target/ARM/ARMAsmPrinter.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp index 61534f660e7..98c37904cfd 100644 --- a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp +++ b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp @@ -23,6 +23,7 @@ #include "llvm/CodeGen/MachineFunctionPass.h" #include "llvm/CodeGen/MachineConstantPool.h" #include "llvm/CodeGen/MachineInstr.h" +#include "llvm/Target/TargetAsmInfo.h" #include "llvm/Target/TargetData.h" #include "llvm/Target/TargetMachine.h" #include "llvm/Support/Mangler.h" @@ -37,8 +38,8 @@ using namespace llvm; namespace { Statistic<> EmittedInsts("asm-printer", "Number of machine instrs printed"); - struct ARMAsmPrinter : public AsmPrinter { - ARMAsmPrinter(std::ostream &O, TargetMachine &TM) : AsmPrinter(O, TM) { + struct VISIBILITY_HIDDEN ARMTargetAsmInfo : public TargetAsmInfo { + ARMTargetAsmInfo() { Data16bitsDirective = "\t.half\t"; Data32bitsDirective = "\t.word\t"; Data64bitsDirective = 0; @@ -47,6 +48,12 @@ namespace { ConstantPoolSection = "\t.text\n"; AlignmentIsInBytes = false; } + }; + + struct VISIBILITY_HIDDEN ARMAsmPrinter : public AsmPrinter { + ARMAsmPrinter(std::ostream &O, TargetMachine &TM, TargetAsmInfo *T) + : AsmPrinter(O, TM, T) { + } /// We name each basic block in a Function with a unique number, so /// that we can consistently refer to them later. This is cleared @@ -106,7 +113,8 @@ namespace { /// FunctionPass *llvm::createARMCodePrinterPass(std::ostream &o, TargetMachine &tm) { - return new ARMAsmPrinter(o, tm); + ARMTargetAsmInfo *TAI = new ARMTargetAsmInfo(); + return new ARMAsmPrinter(o, tm, TAI); } /// runOnMachineFunction - This uses the printMachineInstruction() @@ -187,7 +195,7 @@ void ARMAsmPrinter::printOperand(const MachineInstr *MI, int opNum) { abort(); break; case MachineOperand::MO_ConstantPoolIndex: - O << PrivateGlobalPrefix << "CPI" << getFunctionNumber() + O << TAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber() << '_' << MO.getConstantPoolIndex(); break; default: |

