Removed the SubsectionsViaSymbols MCStreamer API and replaced it with a generic
EmitAssemblerFlag API which takes a value from the added AssemblerFlag
enumerated constants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76087 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/llvm/MC/MCStreamer.h b/include/llvm/MC/MCStreamer.h
index b8f1b26..7d92a16 100644
--- a/include/llvm/MC/MCStreamer.h
+++ b/include/llvm/MC/MCStreamer.h
@@ -53,6 +53,10 @@
       SymbolAttrLast = WeakReference
     };
 
+    enum AssemblerFlag {
+      SubsectionsViaSymbols  /// .subsections_via_symbols (Apple)
+    };
+
   private:
     MCContext &Context;
 
@@ -89,10 +93,8 @@
     // symbol section in the constructor and initialize it here?
     virtual void EmitLabel(MCSymbol *Symbol) = 0;
 
-    /// SubsectionsViaSymbols - Note in the output that the conventions used in
-    /// in the assembly file allows the bytes of a section to be divided up at
-    /// the boundaries of the symbols by a link editor for processing as atoms.
-    virtual void SubsectionsViaSymbols(void) = 0;
+    /// EmitAssemblerFlag - Note in the output the specified @param Flag
+    virtual void EmitAssemblerFlag(AssemblerFlag Flag) = 0;
 
     /// EmitAssignment - Emit an assignment of @param Value to @param Symbol.
     ///
diff --git a/lib/MC/MCAsmStreamer.cpp b/lib/MC/MCAsmStreamer.cpp
index 6916949..e1812ce 100644
--- a/lib/MC/MCAsmStreamer.cpp
+++ b/lib/MC/MCAsmStreamer.cpp
@@ -38,7 +38,7 @@
 
     virtual void EmitLabel(MCSymbol *Symbol);
 
-    virtual void SubsectionsViaSymbols(void);
+    virtual void EmitAssemblerFlag(AssemblerFlag Flag);
 
     virtual void EmitAssignment(MCSymbol *Symbol, const MCValue &Value,
                                 bool MakeAbsolute = false);
@@ -129,8 +129,11 @@
   Symbol->setExternal(false);
 }
 
-void MCAsmStreamer::SubsectionsViaSymbols(void) {
-  OS << ".subsections_via_symbols\n";
+void MCAsmStreamer::EmitAssemblerFlag(AssemblerFlag Flag) {
+  switch (Flag) {
+  case SubsectionsViaSymbols: OS << ".subsections_via_symbols"; break;
+  }
+  OS << '\n';
 }
 
 void MCAsmStreamer::AbortAssembly(const char *AbortReason) {
diff --git a/tools/llvm-mc/AsmParser.cpp b/tools/llvm-mc/AsmParser.cpp
index 5a6db1c..4629cfc 100644
--- a/tools/llvm-mc/AsmParser.cpp
+++ b/tools/llvm-mc/AsmParser.cpp
@@ -1107,7 +1107,7 @@
   
   Lexer.Lex();
 
-  Out.SubsectionsViaSymbols();
+  Out.EmitAssemblerFlag(MCStreamer::SubsectionsViaSymbols);
 
   return false;
 }