From 6d389f5ebae9aa08309c5795234cf155054b6b39 Mon Sep 17 00:00:00 2001
From: Jack Carter <jack.carter@imgtec.com>
Date: Fri, 4 Oct 2013 22:52:31 +0000
Subject: [PATCH] reverting per request

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191992 91177308-0d34-0410-b5e6-96231b3b80d8
---
 include/llvm/MC/MCTargetAsmParser.h           |  5 -----
 lib/MC/MCParser/AsmParser.cpp                 |  4 +---
 lib/Target/Mips/AsmParser/MipsAsmParser.cpp   | 19 -----------------
 .../Mips/MCTargetDesc/MipsELFStreamer.cpp     | 21 ++-----------------
 .../Mips/MCTargetDesc/MipsELFStreamer.h       |  2 --
 lib/Target/Mips/MipsAsmPrinter.cpp            |  4 ++--
 test/MC/Mips/mips_directives.s                |  7 +------
 7 files changed, 6 insertions(+), 56 deletions(-)

diff --git a/include/llvm/MC/MCTargetAsmParser.h b/include/llvm/MC/MCTargetAsmParser.h
index 512fd8649ae..6e96e8becda 100644
--- a/include/llvm/MC/MCTargetAsmParser.h
+++ b/include/llvm/MC/MCTargetAsmParser.h
@@ -176,11 +176,6 @@ public:
   virtual void convertToMapAndConstraints(unsigned Kind,
                       const SmallVectorImpl<MCParsedAsmOperand*> &Operands) = 0;
 
-  /// End of assembly processing.
-  /// This gets called when all assembly has been read and gives the local
-  /// Target AsmParsers an opportunity for any final data processing, etc..
-  virtual void emitEndOfAsmFile(MCStreamer &Out) {}
-
   virtual const MCExpr *applyModifierToExpr(const MCExpr *E,
                                             MCSymbolRefExpr::VariantKind,
                                             MCContext &Ctx) {
diff --git a/lib/MC/MCParser/AsmParser.cpp b/lib/MC/MCParser/AsmParser.cpp
index 53ce02c0899..9a362563a7e 100644
--- a/lib/MC/MCParser/AsmParser.cpp
+++ b/lib/MC/MCParser/AsmParser.cpp
@@ -673,10 +673,8 @@ bool AsmParser::Run(bool NoInitialTextSection, bool NoFinalize) {
 
   // Finalize the output stream if there are no errors and if the client wants
   // us to.
-  if (!HadError && !NoFinalize) {
-    getTargetParser().emitEndOfAsmFile(Out);
+  if (!HadError && !NoFinalize)
     Out.Finish();
-  }
 
   return HadError;
 }
diff --git a/lib/Target/Mips/AsmParser/MipsAsmParser.cpp b/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
index c2e4bba87b3..447e7dc6e1c 100644
--- a/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
+++ b/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
@@ -7,8 +7,6 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include "AsmParser/MipsAsmFlags.h"
-#include "MCTargetDesc/MipsELFStreamer.h"
 #include "MCTargetDesc/MipsMCTargetDesc.h"
 #include "MipsRegisterInfo.h"
 #include "llvm/ADT/StringSwitch.h"
@@ -61,7 +59,6 @@ class MipsAsmParser : public MCTargetAsmParser {
   MCSubtargetInfo &STI;
   MCAsmParser &Parser;
   MipsAssemblerOptions Options;
-  MipsMCAsmFlags Flags;
   bool hasConsumedDollar;
 
 #define GET_ASSEMBLER_HEADER
@@ -231,8 +228,6 @@ class MipsAsmParser : public MCTargetAsmParser {
 
   bool processInstruction(MCInst &Inst, SMLoc IDLoc,
                         SmallVectorImpl<MCInst> &Instructions);
-  void emitEndOfAsmFile(MCStreamer &Out);
-
 public:
   MipsAsmParser(MCSubtargetInfo &sti, MCAsmParser &parser,
                 const MCInstrInfo &MII)
@@ -2177,23 +2172,9 @@ bool MipsAsmParser::ParseDirective(AsmToken DirectiveID) {
     return false;
   }
 
-  if (IDVal == ".abicalls") {
-    Flags.setRelocationModel(MipsMCAsmFlags::MAF_RM_CPIC);
-    if (Parser.getTok().isNot(AsmToken::EndOfStatement))
-      return Error(Parser.getTok().getLoc(), "unexpected token in directive");
-    return false;
-  }
-
   return true;
 }
 
-/// End of assembly processing such as updating ELF header flags.
-void MipsAsmParser::emitEndOfAsmFile(MCStreamer &OutStreamer) {
-  if (MipsELFStreamer *MES = dyn_cast<MipsELFStreamer>(&OutStreamer))
-    MES->emitELFHeaderFlagsAsm(Flags);
-  MCTargetAsmParser::emitEndOfAsmFile(OutStreamer);
-}
-
 extern "C" void LLVMInitializeMipsAsmParser() {
   RegisterMCAsmParser<MipsAsmParser> X(TheMipsTarget);
   RegisterMCAsmParser<MipsAsmParser> Y(TheMipselTarget);
diff --git a/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.cpp b/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.cpp
index 144cb1e4397..cfcb877805a 100644
--- a/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.cpp
+++ b/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.cpp
@@ -7,7 +7,6 @@
 //
 //===-------------------------------------------------------------------===//
 #include "MCTargetDesc/MipsELFStreamer.h"
-#include "AsmParser/MipsAsmFlags.h"
 #include "MipsSubtarget.h"
 #include "llvm/MC/MCAssembler.h"
 #include "llvm/MC/MCELF.h"
@@ -67,26 +66,10 @@ namespace llvm {
     Reloc::Model RM = Subtarget.getRelocationModel();
     if (RM == Reloc::PIC_ || RM == Reloc::Default)
       EFlags |= ELF::EF_MIPS_PIC;
-
-    MCA.setELFHeaderEFlags(EFlags);
-  }
-
-  // For llvm-mc. Set a group of ELF header flags
-  void MipsELFStreamer::emitELFHeaderFlagsAsm(const MipsMCAsmFlags &Flags) {
-
-    // Update e_header flags
-    MCAssembler &MCA = getAssembler();
-    unsigned EFlags = MCA.getELFHeaderEFlags();
-
-    // Relocation Model
-    if (Flags.isModelCpic() || Flags.isModelDefault())
-      EFlags |= ELF::EF_MIPS_CPIC;
-    if (Flags.isModelStatic())
+    else if (RM == Reloc::Static)
       ; // Do nothing for Reloc::Static
-    else if (Flags.isModelPic() || Flags.isModelDefault())
-      EFlags |= ELF::EF_MIPS_PIC;
     else
-      assert(0 && "Unsupported relocation model for e_flags");
+      llvm_unreachable("Unsupported relocation model for e_flags");
 
     MCA.setELFHeaderEFlags(EFlags);
   }
diff --git a/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.h b/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.h
index 9987f348ae6..b10ccc78e66 100644
--- a/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.h
+++ b/lib/Target/Mips/MCTargetDesc/MipsELFStreamer.h
@@ -13,7 +13,6 @@
 
 namespace llvm {
 class MipsAsmPrinter;
-class MipsMCAsmFlags;
 class MipsSubtarget;
 class MCSymbol;
 
@@ -27,7 +26,6 @@ public:
 
   ~MipsELFStreamer() {}
   void emitELFHeaderFlagsCG(const MipsSubtarget &Subtarget);
-  void emitELFHeaderFlagsAsm(const MipsMCAsmFlags &MAFlags);
   void emitMipsSTOCG(const MipsSubtarget &Subtarget,
                      MCSymbol *Sym,
                      unsigned Val);
diff --git a/lib/Target/Mips/MipsAsmPrinter.cpp b/lib/Target/Mips/MipsAsmPrinter.cpp
index b12cb625a78..1dc33265783 100644
--- a/lib/Target/Mips/MipsAsmPrinter.cpp
+++ b/lib/Target/Mips/MipsAsmPrinter.cpp
@@ -594,8 +594,8 @@ void MipsAsmPrinter::EmitEndOfAsmFile(Module &M) {
   // Emit Mips ELF register info
   Subtarget->getMReginfo().emitMipsReginfoSectionCG(
              OutStreamer, getObjFileLowering(), *Subtarget);
-  MipsELFStreamer *MES = cast<MipsELFStreamer>(&OutStreamer);
-  MES->emitELFHeaderFlagsCG(*Subtarget);
+  if (MipsELFStreamer *MES = dyn_cast<MipsELFStreamer>(&OutStreamer))
+    MES->emitELFHeaderFlagsCG(*Subtarget);
 }
 
 void MipsAsmPrinter::PrintDebugValueComment(const MachineInstr *MI,
diff --git a/test/MC/Mips/mips_directives.s b/test/MC/Mips/mips_directives.s
index b1f81827288..bbb26165523 100644
--- a/test/MC/Mips/mips_directives.s
+++ b/test/MC/Mips/mips_directives.s
@@ -1,12 +1,9 @@
 # RUN: llvm-mc -show-encoding -triple mips-unknown-unknown %s | FileCheck %s
-# RUN: llvm-mc -filetype=obj -triple mips-unknown-unknown %s | \
-# RUN: llvm-readobj -h | FileCheck -check-prefix=CHECK-ELF %s
 #
 # CHECK:  .text
 # CHECK:  $BB0_2:
 $BB0_2:
-    .ent directives_test
-    .abicalls
+  .ent directives_test
     .frame    $sp,0,$ra
     .mask     0x00000000,0
     .fmask    0x00000000,0
@@ -46,5 +43,3 @@ $JTI0_0:
 # CHECK:    and     $3, $15, $15       # encoding: [0x01,0xef,0x18,0x24]
     abs.s  f6,FPU_MASK
     and    r3,$t7,STORE_MASK
-
-# CHECK-ELF: Flags [ (0x6)