Refactor instprinter and mcdisassembler to take a SubtargetInfo. Add -mattr= handling to llvm-mc. Reviewed by Owen Anderson.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139237 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/ARM/Disassembler/ARMDisassembler.cpp b/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
index 4d64629..cd0e5e4 100644
--- a/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
+++ b/lib/Target/ARM/Disassembler/ARMDisassembler.cpp
@@ -11,6 +11,7 @@
 
 #include "ARM.h"
 #include "ARMRegisterInfo.h"
+#include "ARMSubtarget.h"
 #include "MCTargetDesc/ARMAddressingModes.h"
 #include "MCTargetDesc/ARMBaseInfo.h"
 #include "llvm/MC/EDInstInfo.h"
@@ -34,8 +35,8 @@
 public:
   /// Constructor     - Initializes the disassembler.
   ///
-  ARMDisassembler() :
-    MCDisassembler() {
+  ARMDisassembler(const MCSubtargetInfo &STI) :
+    MCDisassembler(STI) {
   }
 
   ~ARMDisassembler() {
@@ -58,8 +59,8 @@
 public:
   /// Constructor     - Initializes the disassembler.
   ///
-  ThumbDisassembler() :
-    MCDisassembler() {
+  ThumbDisassembler(const MCSubtargetInfo &STI) :
+    MCDisassembler(STI) {
   }
 
   ~ThumbDisassembler() {
@@ -296,12 +297,12 @@
 #include "ARMGenInstrInfo.inc"
 #include "ARMGenEDInfo.inc"
 
-static MCDisassembler *createARMDisassembler(const Target &T) {
-  return new ARMDisassembler;
+static MCDisassembler *createARMDisassembler(const Target &T, const MCSubtargetInfo &STI) {
+  return new ARMDisassembler(STI);
 }
 
-static MCDisassembler *createThumbDisassembler(const Target &T) {
-  return new ThumbDisassembler;
+static MCDisassembler *createThumbDisassembler(const Target &T, const MCSubtargetInfo &STI) {
+  return new ThumbDisassembler(STI);
 }
 
 EDInstInfo *ARMDisassembler::getEDInfo() const {