Remove old style hacks to register AsmPrinter into TargetMachine.
authorDaniel Dunbar <daniel@zuster.org>
Wed, 15 Jul 2009 22:01:32 +0000 (22:01 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Wed, 15 Jul 2009 22:01:32 +0000 (22:01 +0000)
 - No intended functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75843 91177308-0d34-0410-b5e6-96231b3b80d8

24 files changed:
lib/Target/ARM/ARMTargetMachine.cpp
lib/Target/ARM/ARMTargetMachine.h
lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
lib/Target/Alpha/AlphaTargetMachine.cpp
lib/Target/Alpha/AlphaTargetMachine.h
lib/Target/Alpha/AsmPrinter/AlphaAsmPrinter.cpp
lib/Target/CellSPU/AsmPrinter/SPUAsmPrinter.cpp
lib/Target/CellSPU/SPUTargetMachine.cpp
lib/Target/CellSPU/SPUTargetMachine.h
lib/Target/IA64/AsmPrinter/IA64AsmPrinter.cpp
lib/Target/IA64/IA64TargetMachine.cpp
lib/Target/IA64/IA64TargetMachine.h
lib/Target/Mips/AsmPrinter/MipsAsmPrinter.cpp
lib/Target/Mips/MipsTargetMachine.cpp
lib/Target/Mips/MipsTargetMachine.h
lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp
lib/Target/PowerPC/PPCTargetMachine.cpp
lib/Target/PowerPC/PPCTargetMachine.h
lib/Target/Sparc/AsmPrinter/SparcAsmPrinter.cpp
lib/Target/Sparc/SparcTargetMachine.cpp
lib/Target/Sparc/SparcTargetMachine.h
lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp
lib/Target/X86/X86TargetMachine.cpp
lib/Target/X86/X86TargetMachine.h

index ad800207382a61bbfcae0bd49e595087f3a0eac1..54df2a59e19753c1a1c2a8f14afd7b45f6eb3392 100644 (file)
@@ -45,9 +45,6 @@ static RegisterTarget<ThumbTargetMachine> Y(TheThumbTarget, "thumb", "Thumb");
 // Force static initialization.
 extern "C" void LLVMInitializeARMTarget() { }
 
-// No assembler printer by default
-ARMBaseTargetMachine::AsmPrinterCtorFn ARMBaseTargetMachine::AsmPrinterCtor = 0;
-
 /// TargetMachine ctor - Create an ARM architecture model.
 ///
 ARMBaseTargetMachine::ARMBaseTargetMachine(const Target &T,
@@ -136,11 +133,10 @@ bool ARMBaseTargetMachine::addAssemblyEmitter(PassManagerBase &PM,
                                               CodeGenOpt::Level OptLevel,
                                               bool Verbose,
                                               formatted_raw_ostream &Out) {
-  // Output assembly language.
-  assert(AsmPrinterCtor && "AsmPrinter was not linked in");
-  if (AsmPrinterCtor)
-    PM.add(AsmPrinterCtor(Out, *this, Verbose));
-
+  FunctionPass *Printer = getTarget().createAsmPrinter(Out, *this, Verbose);
+  if (!Printer)
+    llvm_report_error("unable to create assembly printer");
+  PM.add(Printer);
   return false;
 }
 
index 3fe259ad08d745c117652db84fe2d472fcac6b1b..0130a62ef8d364c28745b4e3c1a28837b3f3b678 100644 (file)
@@ -38,14 +38,6 @@ private:
   InstrItineraryData  InstrItins;
   Reloc::Model        DefRelocModel;    // Reloc model before it's overridden.
 
-protected:
-  // To avoid having target depend on the asmprinter stuff libraries, asmprinter
-  // set this functions to ctor pointer at startup time if they are linked in.
-  typedef FunctionPass *(*AsmPrinterCtorFn)(formatted_raw_ostream &o,
-                                            TargetMachine &tm,
-                                            bool verbose);
-  static AsmPrinterCtorFn AsmPrinterCtor;
-
 public:
   ARMBaseTargetMachine(const Target &T, const Module &M, const std::string &FS, 
                        bool isThumb);
@@ -57,10 +49,6 @@ public:
     return InstrItins;
   }
 
-  static void registerAsmPrinter(AsmPrinterCtorFn F) {
-    AsmPrinterCtor = F;
-  }
-
   virtual const TargetAsmInfo *createTargetAsmInfo() const;
 
   // Pass Pipeline Configuration
index 098f5d322579b1917f3a0231b69a43c7ac2af3b0..7270e37fa2bf6718c8a0bb85dfa05769cfe21c0e 100644 (file)
@@ -1293,14 +1293,6 @@ FunctionPass *llvm::createARMCodePrinterPass(formatted_raw_ostream &o,
   return new ARMAsmPrinter(o, tm, tm.getTargetAsmInfo(), verbose);
 }
 
-namespace {
-  static struct Register {
-    Register() {
-      ARMBaseTargetMachine::registerAsmPrinter(createARMCodePrinterPass);
-    }
-  } Registrator;
-}
-
 // Force static initialization.
 extern "C" void LLVMInitializeARMAsmPrinter() { 
   extern Target TheARMTarget, TheThumbTarget;
index a2f4f68784c0d7089d4d936879d7989f7603eecc..9bf588f21b47e2f9d63467ecef1b48550f21e095 100644 (file)
@@ -26,9 +26,6 @@ extern Target TheAlphaTarget;
 static RegisterTarget<AlphaTargetMachine> X(TheAlphaTarget, "alpha", 
                                             "Alpha [experimental]");
 
-// No assembler printer by default
-AlphaTargetMachine::AsmPrinterCtorFn AlphaTargetMachine::AsmPrinterCtor = 0;
-
 // Force static initialization.
 extern "C" void LLVMInitializeAlphaTarget() { }
 
@@ -68,43 +65,34 @@ bool AlphaTargetMachine::addAssemblyEmitter(PassManagerBase &PM,
                                             CodeGenOpt::Level OptLevel,
                                             bool Verbose,
                                             formatted_raw_ostream &Out) {
-  // Output assembly language.
-  assert(AsmPrinterCtor && "AsmPrinter was not linked in");
-  if (AsmPrinterCtor)
-    PM.add(AsmPrinterCtor(Out, *this, Verbose));
+  FunctionPass *Printer = getTarget().createAsmPrinter(Out, *this, Verbose);
+  if (!Printer)
+    llvm_report_error("unable to create assembly printer");
+  PM.add(Printer);
   return false;
 }
 bool AlphaTargetMachine::addCodeEmitter(PassManagerBase &PM,
                                         CodeGenOpt::Level OptLevel,
                                         bool DumpAsm, MachineCodeEmitter &MCE) {
   PM.add(createAlphaCodeEmitterPass(*this, MCE));
-  if (DumpAsm) {
-    assert(AsmPrinterCtor && "AsmPrinter was not linked in");
-    if (AsmPrinterCtor)
-      PM.add(AsmPrinterCtor(ferrs(), *this, true));
-  }
+  if (DumpAsm)
+    addAssemblyEmitter(PM, OptLevel, true, ferrs());
   return false;
 }
 bool AlphaTargetMachine::addCodeEmitter(PassManagerBase &PM,
                                         CodeGenOpt::Level OptLevel,
                                         bool DumpAsm, JITCodeEmitter &JCE) {
   PM.add(createAlphaJITCodeEmitterPass(*this, JCE));
-  if (DumpAsm) {
-    assert(AsmPrinterCtor && "AsmPrinter was not linked in");
-    if (AsmPrinterCtor)
-      PM.add(AsmPrinterCtor(ferrs(), *this, true));
-  }
+  if (DumpAsm)
+    addAssemblyEmitter(PM, OptLevel, true, ferrs());
   return false;
 }
 bool AlphaTargetMachine::addCodeEmitter(PassManagerBase &PM,
                                         CodeGenOpt::Level OptLevel,
                                         bool DumpAsm, ObjectCodeEmitter &OCE) {
   PM.add(createAlphaObjectCodeEmitterPass(*this, OCE));
-  if (DumpAsm) {
-    assert(AsmPrinterCtor && "AsmPrinter was not linked in");
-    if (AsmPrinterCtor)
-      PM.add(AsmPrinterCtor(ferrs(), *this, true));
-  }
+  if (DumpAsm)
+    addAssemblyEmitter(PM, OptLevel, true, ferrs());
   return false;
 }
 bool AlphaTargetMachine::addSimpleCodeEmitter(PassManagerBase &PM,
index 6125ce57fc39c9fe2b775fe985cd4d40554dccc4..d0f600c6abed39cdfdf44bd40c4858ca9a47326a 100644 (file)
@@ -37,13 +37,6 @@ class AlphaTargetMachine : public LLVMTargetMachine {
 protected:
   virtual const TargetAsmInfo *createTargetAsmInfo() const;
 
-  // To avoid having target depend on the asmprinter stuff libraries, asmprinter
-  // set this functions to ctor pointer at startup time if they are linked in.
-  typedef FunctionPass *(*AsmPrinterCtorFn)(formatted_raw_ostream &o,
-                                            TargetMachine &tm,
-                                            bool verbose);
-  static AsmPrinterCtorFn AsmPrinterCtor;
-
 public:
   AlphaTargetMachine(const Target &T, const Module &M, const std::string &FS);
 
@@ -85,10 +78,6 @@ public:
                                     CodeGenOpt::Level OptLevel,
                                     bool DumpAsm,
                                     ObjectCodeEmitter &OCE);
-
-  static void registerAsmPrinter(AsmPrinterCtorFn F) {
-    AsmPrinterCtor = F;
-  }
 };
 
 } // end namespace llvm
index ea810df721bca5cd910bb5cb6f26f9c48248264a..0f5950ed2f4ce1abab552d47d758319035d1b371 100644 (file)
@@ -293,14 +293,6 @@ bool AlphaAsmPrinter::PrintAsmMemoryOperand(const MachineInstr *MI,
   return false;
 }
 
-namespace {
-  static struct Register {
-    Register() {
-      AlphaTargetMachine::registerAsmPrinter(createAlphaCodePrinterPass);
-    }
-  } Registrator;
-}
-
 // Force static initialization.
 extern "C" void LLVMInitializeAlphaAsmPrinter() { 
   extern Target TheAlphaTarget;
index 0c36457913761cad0deee2a8746bcbf59eb0d89f..a1fe8ab8a05a399c1537cd25b6035fce2e2e0de7 100644 (file)
@@ -605,14 +605,6 @@ FunctionPass *llvm::createSPUAsmPrinterPass(formatted_raw_ostream &o,
   return new LinuxAsmPrinter(o, tm, tm.getTargetAsmInfo(), verbose);
 }
 
-namespace {
-  static struct Register {
-    Register() {
-      SPUTargetMachine::registerAsmPrinter(createSPUAsmPrinterPass);
-    }
-  } Registrator;
-}
-
 // Force static initialization.
 extern "C" void LLVMInitializeCellSPUAsmPrinter() { 
   extern Target TheCellSPUTarget;
index 3a659d8e4d9d4788dacf269a9b5292380ba5bdfd..880da0dff4313e86490b010e56c4ddc49ead135b 100644 (file)
@@ -30,9 +30,6 @@ namespace {
   CELLSPU(TheCellSPUTarget, "cellspu", "STI CBEA Cell SPU [experimental]");
 }
 
-// No assembler printer by default
-SPUTargetMachine::AsmPrinterCtorFn SPUTargetMachine::AsmPrinterCtor = 0;
-
 // Force static initialization.
 extern "C" void LLVMInitializeCellSPUTarget() { }
 
@@ -80,9 +77,9 @@ bool SPUTargetMachine::addAssemblyEmitter(PassManagerBase &PM,
                                           CodeGenOpt::Level OptLevel,
                                           bool Verbose,
                                           formatted_raw_ostream &Out) {
-  // Output assembly language.
-  assert(AsmPrinterCtor && "AsmPrinter was not linked in");
-  if (AsmPrinterCtor)
-    PM.add(AsmPrinterCtor(Out, *this, Verbose));
+  FunctionPass *Printer = getTarget().createAsmPrinter(Out, *this, Verbose);
+  if (!Printer)
+    llvm_report_error("unable to create assembly printer");
+  PM.add(Printer);
   return false;
 }
index 18f525d1c8ce792145097420cbb5f366b5fd07e0..47cc92fd32dd9da398e1a08d137564fb358f476a 100644 (file)
@@ -39,13 +39,6 @@ class SPUTargetMachine : public LLVMTargetMachine {
 protected:
   virtual const TargetAsmInfo *createTargetAsmInfo() const;
 
-  // To avoid having target depend on the asmprinter stuff libraries, asmprinter
-  // set this functions to ctor pointer at startup time if they are linked in.
-  typedef FunctionPass *(*AsmPrinterCtorFn)(formatted_raw_ostream &o,
-                                            TargetMachine &tm,
-                                            bool verbose);
-  static AsmPrinterCtorFn AsmPrinterCtor;
-
 public:
   SPUTargetMachine(const Target &T, const Module &M, const std::string &FS);
 
@@ -89,10 +82,6 @@ public:
   virtual bool addAssemblyEmitter(PassManagerBase &PM,
                                   CodeGenOpt::Level OptLevel,
                                   bool Verbose, formatted_raw_ostream &Out);
-
-  static void registerAsmPrinter(AsmPrinterCtorFn F) {
-    AsmPrinterCtor = F;
-  }
 };
 
 } // end namespace llvm
index e5eedad328d968fe51e34b2965438bd1449f840d..819191e4c5de765d2c73d83207d24deb993e6318 100644 (file)
@@ -375,15 +375,6 @@ FunctionPass *llvm::createIA64CodePrinterPass(formatted_raw_ostream &o,
   return new IA64AsmPrinter(o, tm, tm.getTargetAsmInfo(), verbose);
 }
 
-namespace {
-  static struct Register {
-    Register() {
-      IA64TargetMachine::registerAsmPrinter(createIA64CodePrinterPass);
-    }
-  } Registrator;
-}
-
-
 // Force static initialization.
 extern "C" void LLVMInitializeIA64AsmPrinter() { 
   extern Target TheIA64Target;
index 5355075f8b387307f0373017924d329a1a76af7a..e48d0701a2bffbf8ccdc086d45b0a21ad729d0f7 100644 (file)
@@ -24,9 +24,6 @@ extern Target TheIA64Target;
 static RegisterTarget<IA64TargetMachine> X(TheIA64Target, "ia64",
                                            "IA-64 (Itanium) [experimental]");
 
-// No assembler printer by default
-IA64TargetMachine::AsmPrinterCtorFn IA64TargetMachine::AsmPrinterCtor = 0;
-
 // Force static initialization.
 extern "C" void LLVMInitializeIA64Target() { }
 
@@ -65,10 +62,9 @@ bool IA64TargetMachine::addAssemblyEmitter(PassManagerBase &PM,
                                            CodeGenOpt::Level OptLevel,
                                            bool Verbose,
                                            formatted_raw_ostream &Out) {
-  // Output assembly language.
-  assert(AsmPrinterCtor && "AsmPrinter was not linked in");
-  if (AsmPrinterCtor)
-    PM.add(AsmPrinterCtor(Out, *this, Verbose));
+  FunctionPass *Printer = getTarget().createAsmPrinter(Out, *this, Verbose);
+  if (!Printer)
+    llvm_report_error("unable to create assembly printer");
+  PM.add(Printer);
   return false;
 }
-
index e82bf59c964616e8973a9649ea07c61fe4910923..44d1adcbe616e90d4f065ddfdeef61929580bbb4 100644 (file)
@@ -34,13 +34,6 @@ class IA64TargetMachine : public LLVMTargetMachine {
 protected:
   virtual const TargetAsmInfo *createTargetAsmInfo() const;
 
-  // To avoid having target depend on the asmprinter stuff libraries, asmprinter
-  // set this functions to ctor pointer at startup time if they are linked in.
-  typedef FunctionPass *(*AsmPrinterCtorFn)(formatted_raw_ostream &o,
-                                            TargetMachine &tm,
-                                            bool verbose);
-  static AsmPrinterCtorFn AsmPrinterCtor;
-
 public:
   IA64TargetMachine(const Target &T, const Module &M, const std::string &FS);
 
@@ -61,10 +54,6 @@ public:
   virtual bool addAssemblyEmitter(PassManagerBase &PM,
                                   CodeGenOpt::Level OptLevel,
                                   bool Verbose, formatted_raw_ostream &Out);
-
-  static void registerAsmPrinter(AsmPrinterCtorFn F) {
-    AsmPrinterCtor = F;
-  }
 };
 } // End llvm namespace
 
index 501dc6a7abae7fbd9d2dedeb3b191fe10f2778ba..43da443c808237748d2ee8979451f53c453d2422 100644 (file)
@@ -576,14 +576,6 @@ doFinalization(Module &M)
   return AsmPrinter::doFinalization(M);
 }
 
-namespace {
-  static struct Register {
-    Register() {
-      MipsTargetMachine::registerAsmPrinter(createMipsCodePrinterPass);
-    }
-  } Registrator;
-}
-
 // Force static initialization.
 extern "C" void LLVMInitializeMipsAsmPrinter() { 
   extern Target TheMipsTarget;
index 3c2693bf16d42a810f02906e02eefd370ba6aa4e..28c155bcb76d6230e11c9104662d08d02f026962 100644 (file)
@@ -35,9 +35,6 @@ extern Target TheMipselTarget;
 static RegisterTarget<MipselTargetMachine>  Y(TheMipselTarget, "mipsel", 
                                               "Mipsel");
 
-MipsTargetMachine::AsmPrinterCtorFn MipsTargetMachine::AsmPrinterCtor = 0;
-
-
 // Force static initialization.
 extern "C" void LLVMInitializeMipsTarget() { }
 
@@ -103,8 +100,9 @@ addPreEmitPass(PassManagerBase &PM, CodeGenOpt::Level OptLevel)
 bool MipsTargetMachine::
 addAssemblyEmitter(PassManagerBase &PM, CodeGenOpt::Level OptLevel, 
                    bool Verbose, formatted_raw_ostream &Out)  {
-  // Output assembly language.
-  assert(AsmPrinterCtor && "AsmPrinter was not linked in");
-  PM.add(AsmPrinterCtor(Out, *this, Verbose));
+  FunctionPass *Printer = getTarget().createAsmPrinter(Out, *this, Verbose);
+  if (!Printer)
+    llvm_report_error("unable to create assembly printer");
+  PM.add(Printer);
   return false;
 }
index 6e2562a312e03b5992022b88577489f0cc79af3f..1d0182028698d78b878edb0cb18d21c84da414ba 100644 (file)
@@ -33,22 +33,10 @@ namespace llvm {
   
   protected:
     virtual const TargetAsmInfo *createTargetAsmInfo() const;
-  protected:
-    // To avoid having target depend on the asmprinter stuff libraries,
-    // asmprinter set this functions to ctor pointer at startup time if they are
-    // linked in.
-    typedef FunctionPass *(*AsmPrinterCtorFn)(formatted_raw_ostream &o,
-                                              TargetMachine &tm,
-                                              bool verbose);
-    static AsmPrinterCtorFn AsmPrinterCtor;
     
   public:
     MipsTargetMachine(const Target &T, const Module &M, const std::string &FS, 
                       bool isLittle);
-
-    static void registerAsmPrinter(AsmPrinterCtorFn F) {
-      AsmPrinterCtor = F;
-    }
     
     virtual const MipsInstrInfo   *getInstrInfo()     const 
     { return &InstrInfo; }
index f568bc1b03c3e8fc7f12626830bb0d13b12960b2..44b0d0c6a3537235894d580dbc67a2cc0e8bdcf6 100644 (file)
@@ -1092,14 +1092,6 @@ FunctionPass *llvm::createPPCAsmPrinterPass(formatted_raw_ostream &o,
   }
 }
 
-namespace {
-  static struct Register {
-    Register() {
-      PPCTargetMachine::registerAsmPrinter(createPPCAsmPrinterPass);
-    }
-  } Registrator;
-}
-
 extern "C" int PowerPCAsmPrinterForceLink;
 int PowerPCAsmPrinterForceLink = 0;
 
index 7e401c453f0fc6781573ed70fbb7943f6c6fe7e9..1928d6ac26ef098adf1297e0ea109bbe67a9d4d8 100644 (file)
@@ -41,9 +41,6 @@ Y(ThePPC64Target, "ppc64", "PowerPC 64");
 // Force static initialization.
 extern "C" void LLVMInitializePowerPCTarget() { }
 
-// No assembler printer by default
-PPCTargetMachine::AsmPrinterCtorFn PPCTargetMachine::AsmPrinterCtor = 0;
-
 const TargetAsmInfo *PPCTargetMachine::createTargetAsmInfo() const {
   if (Subtarget.isDarwin())
     return new PPCDarwinTargetAsmInfo(*this);
@@ -105,10 +102,10 @@ bool PPCTargetMachine::addAssemblyEmitter(PassManagerBase &PM,
                                           CodeGenOpt::Level OptLevel,
                                           bool Verbose,
                                           formatted_raw_ostream &Out) {
-  assert(AsmPrinterCtor && "AsmPrinter was not linked in");
-  if (AsmPrinterCtor)
-    PM.add(AsmPrinterCtor(Out, *this, Verbose));
-
+  FunctionPass *Printer = getTarget().createAsmPrinter(Out, *this, Verbose);
+  if (!Printer)
+    llvm_report_error("unable to create assembly printer");
+  PM.add(Printer);
   return false;
 }
 
index 794123ad164148a65dc74694e5821eb8b6ba9773..e393bf49a6947713887a16232750de33f5d44f7d 100644 (file)
@@ -42,13 +42,6 @@ class PPCTargetMachine : public LLVMTargetMachine {
 protected:
   virtual const TargetAsmInfo *createTargetAsmInfo() const;
 
-  // To avoid having target depend on the asmprinter stuff libraries, asmprinter
-  // set this functions to ctor pointer at startup time if they are linked in.
-  typedef FunctionPass *(*AsmPrinterCtorFn)(formatted_raw_ostream &o,
-                                            TargetMachine &m, 
-                                            bool verbose);
-  static AsmPrinterCtorFn AsmPrinterCtor;
-
 public:
   PPCTargetMachine(const Target &T, const Module &M, const std::string &FS, 
                    bool is64Bit);
@@ -72,10 +65,6 @@ public:
     return &MachOWriterInfo;
   }
 
-  static void registerAsmPrinter(AsmPrinterCtorFn F) {
-    AsmPrinterCtor = F;
-  }
-
   // Pass Pipeline Configuration
   virtual bool addInstSelector(PassManagerBase &PM, CodeGenOpt::Level OptLevel);
   virtual bool addPreEmitPass(PassManagerBase &PM, CodeGenOpt::Level OptLevel);
index 03735b0f41dc65bff1670d53b24bdba3ca89ce71..dce42e49191f3d02d2ef5f38556a61defad3481f 100644 (file)
@@ -351,14 +351,6 @@ bool SparcAsmPrinter::PrintAsmMemoryOperand(const MachineInstr *MI,
   return false;
 }
 
-namespace {
-  static struct Register {
-    Register() {
-      SparcTargetMachine::registerAsmPrinter(createSparcCodePrinterPass);
-    }
-  } Registrator;
-}
-
 // Force static initialization.
 extern "C" void LLVMInitializeSparcAsmPrinter() { 
   extern Target TheSparcTarget;
index 255036311341979b13d7a0c78881762e02c188bb..c872f4607876fbc12e98f4401c956d2fda8dacd1 100644 (file)
@@ -22,10 +22,6 @@ using namespace llvm;
 extern Target TheSparcTarget;
 static RegisterTarget<SparcTargetMachine> X(TheSparcTarget, "sparc", "SPARC");
 
-// No assembler printer by default
-SparcTargetMachine::AsmPrinterCtorFn SparcTargetMachine::AsmPrinterCtor = 0;
-
-
 // Force static initialization.
 extern "C" void LLVMInitializeSparcTarget() { }
 
@@ -64,9 +60,9 @@ bool SparcTargetMachine::addAssemblyEmitter(PassManagerBase &PM,
                                             CodeGenOpt::Level OptLevel,
                                             bool Verbose,
                                             formatted_raw_ostream &Out) {
-  // Output assembly language.
-  assert(AsmPrinterCtor && "AsmPrinter was not linked in");
-  if (AsmPrinterCtor)
-    PM.add(AsmPrinterCtor(Out, *this, Verbose));
+  FunctionPass *Printer = getTarget().createAsmPrinter(Out, *this, Verbose);
+  if (!Printer)
+    llvm_report_error("unable to create assembly printer");
+  PM.add(Printer);
   return false;
 }
index ca34b96365d3115cf13bf53c2fee158dab4928dd..423c9505a2ab51fa51004d5c204eb07af8e9272a 100644 (file)
@@ -35,13 +35,6 @@ class SparcTargetMachine : public LLVMTargetMachine {
 protected:
   virtual const TargetAsmInfo *createTargetAsmInfo() const;
   
-  // To avoid having target depend on the asmprinter stuff libraries, asmprinter
-  // set this functions to ctor pointer at startup time if they are linked in.
-  typedef FunctionPass *(*AsmPrinterCtorFn)(formatted_raw_ostream &o,
-                                            TargetMachine &tm,
-                                            bool verbose);
-  static AsmPrinterCtorFn AsmPrinterCtor;
-  
 public:
   SparcTargetMachine(const Target &T, const Module &M, const std::string &FS);
 
@@ -62,10 +55,6 @@ public:
   virtual bool addAssemblyEmitter(PassManagerBase &PM,
                                   CodeGenOpt::Level OptLevel,
                                   bool Verbose, formatted_raw_ostream &Out);
-  
-  static void registerAsmPrinter(AsmPrinterCtorFn F) {
-    AsmPrinterCtor = F;
-  }
 };
 
 } // end namespace llvm
index 3fad77e8ca6651130e1c4379286ae8ae3dbfb7f4..d2bab78cb8301b490829ebeb84e7cb785137f46a 100644 (file)
@@ -34,14 +34,6 @@ FunctionPass *llvm::createX86CodePrinterPass(formatted_raw_ostream &o,
   return new X86ATTAsmPrinter(o, tm, tm.getTargetAsmInfo(), verbose);
 }
 
-namespace {
-  static struct Register {
-    Register() {
-      X86TargetMachine::registerAsmPrinter(createX86CodePrinterPass);
-    }
-  } Registrator;
-}
-
 extern "C" int X86AsmPrinterForceLink;
 int X86AsmPrinterForceLink = 0;
 
index c64084756c160c8dbbf14da547edce0f41c78427..f4c8b13490030a10e19af1041d16fbf276bc900d 100644 (file)
@@ -44,9 +44,6 @@ extern "C" void LLVMInitializeX86Target() {
   
 }
 
-// No assembler printer by default
-X86TargetMachine::AsmPrinterCtorFn X86TargetMachine::AsmPrinterCtor = 0;
-
 const TargetAsmInfo *X86TargetMachine::createTargetAsmInfo() const {
   if (Subtarget.isFlavorIntel())
     return new X86WinTargetAsmInfo(*this);
@@ -188,9 +185,10 @@ bool X86TargetMachine::addAssemblyEmitter(PassManagerBase &PM,
                                           CodeGenOpt::Level OptLevel,
                                           bool Verbose,
                                           formatted_raw_ostream &Out) {
-  assert(AsmPrinterCtor && "AsmPrinter was not linked in");
-  if (AsmPrinterCtor)
-    PM.add(AsmPrinterCtor(Out, *this, Verbose));
+  FunctionPass *Printer = getTarget().createAsmPrinter(Out, *this, Verbose);
+  if (!Printer)
+    llvm_report_error("unable to create assembly printer");
+  PM.add(Printer);
   return false;
 }
 
index da6811bd236c83878853d6d36107d4abff031e4d..5733770dc9a79751f00611f2dab6aa78068d8225 100644 (file)
@@ -41,13 +41,6 @@ class X86TargetMachine : public LLVMTargetMachine {
 protected:
   virtual const TargetAsmInfo *createTargetAsmInfo() const;
 
-  // To avoid having target depend on the asmprinter stuff libraries, asmprinter
-  // set this functions to ctor pointer at startup time if they are linked in.
-  typedef FunctionPass *(*AsmPrinterCtorFn)(formatted_raw_ostream &o,
-                                            TargetMachine &tm,
-                                            bool verbose);
-  static AsmPrinterCtorFn AsmPrinterCtor;
-
 public:
   X86TargetMachine(const Target &T, const Module &M, const std::string &FS, 
                    bool is64Bit);
@@ -67,10 +60,6 @@ public:
     return Subtarget.isTargetELF() ? &ELFWriterInfo : 0;
   }
 
-  static void registerAsmPrinter(AsmPrinterCtorFn F) {
-    AsmPrinterCtor = F;
-  }
-
   // Set up the pass pipeline.
   virtual bool addInstSelector(PassManagerBase &PM, CodeGenOpt::Level OptLevel);
   virtual bool addPreRegAlloc(PassManagerBase &PM, CodeGenOpt::Level OptLevel);