[llvm-commits] CVS: llvm/lib/Target/IA64/IA64AsmPrinter.cpp

Jim Laskey jlaskey at apple.com
Wed Sep 6 11:35:05 PDT 2006



Changes in directory llvm/lib/Target/IA64:

IA64AsmPrinter.cpp updated: 1.33 -> 1.34
---
Log message:

Separate target specific asm properties from the asm printers.


---
Diffs of the changes:  (+15 -6)

 IA64AsmPrinter.cpp |   21 +++++++++++++++------
 1 files changed, 15 insertions(+), 6 deletions(-)


Index: llvm/lib/Target/IA64/IA64AsmPrinter.cpp
diff -u llvm/lib/Target/IA64/IA64AsmPrinter.cpp:1.33 llvm/lib/Target/IA64/IA64AsmPrinter.cpp:1.34
--- llvm/lib/Target/IA64/IA64AsmPrinter.cpp:1.33	Mon May  8 23:59:56 2006
+++ llvm/lib/Target/IA64/IA64AsmPrinter.cpp	Wed Sep  6 13:34:40 2006
@@ -24,6 +24,7 @@
 #include "llvm/CodeGen/AsmPrinter.h"
 #include "llvm/CodeGen/MachineFunctionPass.h"
 #include "llvm/Target/TargetMachine.h"
+#include "llvm/Target/TargetAsmInfo.h"
 #include "llvm/Support/Mangler.h"
 #include "llvm/ADT/Statistic.h"
 #include <iostream>
@@ -32,10 +33,8 @@
 namespace {
   Statistic<> EmittedInsts("asm-printer", "Number of machine instrs printed");
 
-  struct IA64AsmPrinter : public AsmPrinter {
-    std::set<std::string> ExternalFunctionNames, ExternalObjectNames;
-
-    IA64AsmPrinter(std::ostream &O, TargetMachine &TM) : AsmPrinter(O, TM) {
+  struct VISIBILITY_HIDDEN IA64TargetAsmInfo : public TargetAsmInfo {
+    IA64TargetAsmInfo() {
       CommentString = "//";
       Data8bitsDirective = "\tdata1\t";     // FIXME: check that we are
       Data16bitsDirective = "\tdata2.ua\t"; // disabling auto-alignment
@@ -52,6 +51,14 @@
       // FIXME: would be nice to have rodata (no 'w') when appropriate?
       ConstantPoolSection = "\n\t.section .data, \"aw\", \"progbits\"\n";
     }
+  };
+  
+  struct IA64AsmPrinter : public AsmPrinter {
+    std::set<std::string> ExternalFunctionNames, ExternalObjectNames;
+
+    IA64AsmPrinter(std::ostream &O, TargetMachine &TM, TargetAsmInfo *T)
+      : AsmPrinter(O, TM, T) {
+    }
 
     virtual const char *getPassName() const {
       return "IA64 Assembly Printer";
@@ -185,7 +192,8 @@
     printBasicBlockLabel(MO.getMachineBasicBlock());
     return;
   case MachineOperand::MO_ConstantPoolIndex: {
-    O << "@gprel(" << PrivateGlobalPrefix << "CPI" << getFunctionNumber() << "_"
+    O << "@gprel(" << TAI->getPrivateGlobalPrefix()
+      << "CPI" << getFunctionNumber() << "_"
       << MO.getConstantPoolIndex() << ")";
     return;
   }
@@ -358,7 +366,8 @@
 ///
 FunctionPass *llvm::createIA64CodePrinterPass(std::ostream &o,
                                               IA64TargetMachine &tm) {
-  return new IA64AsmPrinter(o, tm);
+  IA64TargetAsmInfo *TAI = new IA64TargetAsmInfo();
+  return new IA64AsmPrinter(o, tm, TAI);
 }
 
 






More information about the llvm-commits mailing list