summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Enderby <enderby@apple.com>2009-07-16 17:56:39 +0000
committerKevin Enderby <enderby@apple.com>2009-07-16 17:56:39 +0000
commitf96db468fcf62d671cda99b68b6cfd3f2dc0b839 (patch)
tree2f2ec649cdaffcddb153812a764a05cbe96e42dd
parent214d3194034e39351a14093be5711daf507c8c4b (diff)
downloadllvm-f96db468fcf62d671cda99b68b6cfd3f2dc0b839.tar.gz
llvm-f96db468fcf62d671cda99b68b6cfd3f2dc0b839.tar.bz2
llvm-f96db468fcf62d671cda99b68b6cfd3f2dc0b839.tar.xz
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
-rw-r--r--include/llvm/MC/MCStreamer.h10
-rw-r--r--lib/MC/MCAsmStreamer.cpp9
-rw-r--r--tools/llvm-mc/AsmParser.cpp2
3 files changed, 13 insertions, 8 deletions
diff --git a/include/llvm/MC/MCStreamer.h b/include/llvm/MC/MCStreamer.h
index b8f1b2659d..7d92a16507 100644
--- a/include/llvm/MC/MCStreamer.h
+++ b/include/llvm/MC/MCStreamer.h
@@ -53,6 +53,10 @@ namespace llvm {
SymbolAttrLast = WeakReference
};
+ enum AssemblerFlag {
+ SubsectionsViaSymbols /// .subsections_via_symbols (Apple)
+ };
+
private:
MCContext &Context;
@@ -89,10 +93,8 @@ namespace llvm {
// 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 691694978d..e1812cee59 100644
--- a/lib/MC/MCAsmStreamer.cpp
+++ b/lib/MC/MCAsmStreamer.cpp
@@ -38,7 +38,7 @@ namespace {
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 @@ void MCAsmStreamer::EmitLabel(MCSymbol *Symbol) {
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 5a6db1c9c0..4629cfc34b 100644
--- a/tools/llvm-mc/AsmParser.cpp
+++ b/tools/llvm-mc/AsmParser.cpp
@@ -1107,7 +1107,7 @@ bool AsmParser::ParseDirectiveDarwinSubsectionsViaSymbols() {
Lexer.Lex();
- Out.SubsectionsViaSymbols();
+ Out.EmitAssemblerFlag(MCStreamer::SubsectionsViaSymbols);
return false;
}