Overhaul my earlier submission due to feedback. It's a large patch, but most of
them are generic changes.

- Use the "fast" flag that's already being passed into the asm printers instead
  of shoving it into the DwarfWriter.

- Instead of calling "MI->getParent()->getParent()" for every MI, set the
  machine function when calling "runOnMachineFunction" in the asm printers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65379 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/IA64/IA64AsmPrinter.cpp b/lib/Target/IA64/IA64AsmPrinter.cpp
index 567e04c..0047430 100644
--- a/lib/Target/IA64/IA64AsmPrinter.cpp
+++ b/lib/Target/IA64/IA64AsmPrinter.cpp
@@ -34,12 +34,12 @@
 STATISTIC(EmittedInsts, "Number of machine instrs printed");
 
 namespace {
-  struct IA64AsmPrinter : public AsmPrinter {
+  class IA64AsmPrinter : public AsmPrinter {
     std::set<std::string> ExternalFunctionNames, ExternalObjectNames;
-
-    IA64AsmPrinter(raw_ostream &O, TargetMachine &TM, const TargetAsmInfo *T)
-      : AsmPrinter(O, TM, T) {
-    }
+  public:
+    IA64AsmPrinter(raw_ostream &O, TargetMachine &TM,
+                   const TargetAsmInfo *T, bool F)
+      : AsmPrinter(O, TM, T, F) {}
 
     virtual const char *getPassName() const {
       return "IA64 Assembly Printer";
@@ -124,6 +124,8 @@
 /// method to print assembly for each instruction.
 ///
 bool IA64AsmPrinter::runOnMachineFunction(MachineFunction &MF) {
+  this->MF = &MF;
+
   SetupMachineFunction(MF);
   O << "\n\n";
 
@@ -365,6 +367,7 @@
 /// the given target machine description.
 ///
 FunctionPass *llvm::createIA64CodePrinterPass(raw_ostream &o,
-                                              IA64TargetMachine &tm) {
-  return new IA64AsmPrinter(o, tm, tm.getTargetAsmInfo());
+                                              IA64TargetMachine &tm,
+                                              bool fast) {
+  return new IA64AsmPrinter(o, tm, tm.getTargetAsmInfo(), fast);
 }