Reverting r297821 due to breaking lld test.

llvm-svn: 297838
diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp b/llvm/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp
index 263671d..9e4d202 100644
--- a/llvm/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp
+++ b/llvm/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.cpp
@@ -257,43 +257,24 @@
                       uint64_t Size, uint64_t &Target) const override {
     // We only handle PCRel branches for now.
     if (Info->get(Inst.getOpcode()).OpInfo[0].OperandType!=MCOI::OPERAND_PCREL)
-      return false;

-

-    int64_t Imm = Inst.getOperand(0).getImm();

-    Target = Addr+Imm+8; // In ARM mode the PC is always off by 8 bytes.

-    return true;

-  }

-};

-

-class ThumbMCInstrAnalysis : public ARMMCInstrAnalysis {

-public:

-  ThumbMCInstrAnalysis(const MCInstrInfo *Info) : ARMMCInstrAnalysis(Info) {}

-

-  bool evaluateBranch(const MCInst &Inst, uint64_t Addr,

-                      uint64_t Size, uint64_t &Target) const override {

-    // We only handle PCRel branches for now.

-    if (Info->get(Inst.getOpcode()).OpInfo[0].OperandType!=MCOI::OPERAND_PCREL)

-      return false;

-

-    int64_t Imm = Inst.getOperand(0).getImm();

-    Target = Addr+Imm+4; // In Thumb mode the PC is always off by 4 bytes.

-    return true;

-  }

-};

-

-}

-

-static MCInstrAnalysis *createARMMCInstrAnalysis(const MCInstrInfo *Info) {

-  return new ARMMCInstrAnalysis(Info);

-}

-

-static MCInstrAnalysis *createThumbMCInstrAnalysis(const MCInstrInfo *Info) {

-  return new ThumbMCInstrAnalysis(Info);

-}

-

-// Force static initialization.

-extern "C" void LLVMInitializeARMTargetMC() {

-  for (Target *T : {&getTheARMLETarget(), &getTheARMBETarget(),

+      return false;
+
+    int64_t Imm = Inst.getOperand(0).getImm();
+    // FIXME: This is not right for thumb.
+    Target = Addr+Imm+8; // In ARM mode the PC is always off by 8 bytes.
+    return true;
+  }
+};
+
+}
+
+static MCInstrAnalysis *createARMMCInstrAnalysis(const MCInstrInfo *Info) {
+  return new ARMMCInstrAnalysis(Info);
+}
+
+// Force static initialization.
+extern "C" void LLVMInitializeARMTargetMC() {
+  for (Target *T : {&getTheARMLETarget(), &getTheARMBETarget(),
                     &getTheThumbLETarget(), &getTheThumbBETarget()}) {
     // Register the MC asm info.
     RegisterMCAsmInfoFn X(*T, createARMMCAsmInfo);
@@ -305,12 +286,15 @@
     TargetRegistry::RegisterMCRegInfo(*T, createARMMCRegisterInfo);
 
     // Register the MC subtarget info.
-    TargetRegistry::RegisterMCSubtargetInfo(*T,

-                                            ARM_MC::createARMMCSubtargetInfo);

-

-    TargetRegistry::RegisterELFStreamer(*T, createELFStreamer);

-    TargetRegistry::RegisterCOFFStreamer(*T, createARMWinCOFFStreamer);

-    TargetRegistry::RegisterMachOStreamer(*T, createARMMachOStreamer);

+    TargetRegistry::RegisterMCSubtargetInfo(*T,
+                                            ARM_MC::createARMMCSubtargetInfo);
+
+    // Register the MC instruction analyzer.
+    TargetRegistry::RegisterMCInstrAnalysis(*T, createARMMCInstrAnalysis);
+
+    TargetRegistry::RegisterELFStreamer(*T, createELFStreamer);
+    TargetRegistry::RegisterCOFFStreamer(*T, createARMWinCOFFStreamer);
+    TargetRegistry::RegisterMachOStreamer(*T, createARMMachOStreamer);
 
     // Register the obj target streamer.
     TargetRegistry::RegisterObjectTargetStreamer(*T,
@@ -326,18 +310,12 @@
     TargetRegistry::RegisterMCInstPrinter(*T, createARMMCInstPrinter);
 
     // Register the MC relocation info.
-    TargetRegistry::RegisterMCRelocationInfo(*T, createARMMCRelocationInfo);

-  }

-

-  // Register the MC instruction analyzer.

-  for (Target *T : {&getTheARMLETarget(), &getTheARMBETarget()})

-    TargetRegistry::RegisterMCInstrAnalysis(*T, createARMMCInstrAnalysis);

-  for (Target *T : {&getTheThumbLETarget(), &getTheThumbBETarget()})

-    TargetRegistry::RegisterMCInstrAnalysis(*T, createThumbMCInstrAnalysis);

-

-  // Register the MC Code Emitter

-  for (Target *T : {&getTheARMLETarget(), &getTheThumbLETarget()})

-    TargetRegistry::RegisterMCCodeEmitter(*T, createARMLEMCCodeEmitter);

+    TargetRegistry::RegisterMCRelocationInfo(*T, createARMMCRelocationInfo);
+  }
+
+  // Register the MC Code Emitter
+  for (Target *T : {&getTheARMLETarget(), &getTheThumbLETarget()})
+    TargetRegistry::RegisterMCCodeEmitter(*T, createARMLEMCCodeEmitter);
   for (Target *T : {&getTheARMBETarget(), &getTheThumbBETarget()})
     TargetRegistry::RegisterMCCodeEmitter(*T, createARMBEMCCodeEmitter);