aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/MC
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/MC')
-rw-r--r--llvm/lib/MC/MCAsmInfo.cpp3
-rw-r--r--llvm/lib/MC/MCAsmStreamer.cpp13
-rw-r--r--llvm/lib/MC/MCELFStreamer.cpp5
-rw-r--r--llvm/lib/MC/MCMachOStreamer.cpp17
-rw-r--r--llvm/lib/MC/MCNullStreamer.cpp1
-rw-r--r--llvm/lib/MC/MCParser/DarwinAsmParser.cpp2
-rw-r--r--llvm/lib/MC/MCStreamer.cpp5
-rw-r--r--llvm/lib/MC/MCWasmStreamer.cpp8
-rw-r--r--llvm/lib/MC/MCWinCOFFStreamer.cpp16
9 files changed, 12 insertions, 58 deletions
diff --git a/llvm/lib/MC/MCAsmInfo.cpp b/llvm/lib/MC/MCAsmInfo.cpp
index 49e8db2..86759c3 100644
--- a/llvm/lib/MC/MCAsmInfo.cpp
+++ b/llvm/lib/MC/MCAsmInfo.cpp
@@ -48,9 +48,6 @@ MCAsmInfo::MCAsmInfo() {
LinkerPrivateGlobalPrefix = "";
InlineAsmStart = "APP";
InlineAsmEnd = "NO_APP";
- Code16Directive = ".code16";
- Code32Directive = ".code32";
- Code64Directive = ".code64";
ZeroDirective = "\t.zero\t";
AsciiDirective = "\t.ascii\t";
AscizDirective = "\t.asciz\t";
diff --git a/llvm/lib/MC/MCAsmStreamer.cpp b/llvm/lib/MC/MCAsmStreamer.cpp
index 42e6245..f670335 100644
--- a/llvm/lib/MC/MCAsmStreamer.cpp
+++ b/llvm/lib/MC/MCAsmStreamer.cpp
@@ -182,7 +182,7 @@ public:
void emitLabel(MCSymbol *Symbol, SMLoc Loc = SMLoc()) override;
- void emitAssemblerFlag(MCAssemblerFlag Flag) override;
+ void emitSubsectionsViaSymbols() override;
void emitLinkerOptions(ArrayRef<std::string> Options) override;
void emitDataRegion(MCDataRegionType Kind) override;
void emitVersionMin(MCVersionMinType Kind, unsigned Major, unsigned Minor,
@@ -597,15 +597,8 @@ void MCAsmStreamer::emitGNUAttribute(unsigned Tag, unsigned Value) {
OS << "\t.gnu_attribute " << Tag << ", " << Value << "\n";
}
-void MCAsmStreamer::emitAssemblerFlag(MCAssemblerFlag Flag) {
- switch (Flag) {
- case MCAF_SyntaxUnified: OS << "\t.syntax unified"; break;
- case MCAF_SubsectionsViaSymbols: OS << ".subsections_via_symbols"; break;
- case MCAF_Code16: OS << '\t'<< MAI->getCode16Directive();break;
- case MCAF_Code32: OS << '\t'<< MAI->getCode32Directive();break;
- case MCAF_Code64: OS << '\t'<< MAI->getCode64Directive();break;
- }
- EmitEOL();
+void MCAsmStreamer::emitSubsectionsViaSymbols() {
+ OS << ".subsections_via_symbols\n";
}
void MCAsmStreamer::emitLinkerOptions(ArrayRef<std::string> Options) {
diff --git a/llvm/lib/MC/MCELFStreamer.cpp b/llvm/lib/MC/MCELFStreamer.cpp
index 5cf67f0..7006ac9 100644
--- a/llvm/lib/MC/MCELFStreamer.cpp
+++ b/llvm/lib/MC/MCELFStreamer.cpp
@@ -84,11 +84,6 @@ void MCELFStreamer::emitLabelAtPos(MCSymbol *S, SMLoc Loc, MCDataFragment &F,
Symbol->setType(ELF::STT_TLS);
}
-void MCELFStreamer::emitAssemblerFlag(MCAssemblerFlag Flag) {
- // Let the target do whatever target specific stuff it needs to do.
- getAssembler().getBackend().handleAssemblerFlag(Flag);
-}
-
// If bundle alignment is used and there are any instructions in the section, it
// needs to be aligned to at least the bundle size.
static void setSectionAlignmentForBundling(const MCAssembler &Assembler,
diff --git a/llvm/lib/MC/MCMachOStreamer.cpp b/llvm/lib/MC/MCMachOStreamer.cpp
index 9b7152f..4cf602b 100644
--- a/llvm/lib/MC/MCMachOStreamer.cpp
+++ b/llvm/lib/MC/MCMachOStreamer.cpp
@@ -89,7 +89,7 @@ public:
void emitLabel(MCSymbol *Symbol, SMLoc Loc = SMLoc()) override;
void emitAssignment(MCSymbol *Symbol, const MCExpr *Value) override;
void emitEHSymAttributes(const MCSymbol *Symbol, MCSymbol *EHSymbol) override;
- void emitAssemblerFlag(MCAssemblerFlag Flag) override;
+ void emitSubsectionsViaSymbols() override;
void emitLinkerOptions(ArrayRef<std::string> Options) override;
void emitDataRegion(MCDataRegionType Kind) override;
void emitVersionMin(MCVersionMinType Kind, unsigned Major, unsigned Minor,
@@ -209,19 +209,8 @@ void MCMachOStreamer::emitDataRegionEnd() {
emitLabel(Data.End);
}
-void MCMachOStreamer::emitAssemblerFlag(MCAssemblerFlag Flag) {
- // Let the target do whatever target specific stuff it needs to do.
- getAssembler().getBackend().handleAssemblerFlag(Flag);
- // Do any generic stuff we need to do.
- switch (Flag) {
- case MCAF_SyntaxUnified: return; // no-op here.
- case MCAF_Code16: return; // Change parsing mode; no-op here.
- case MCAF_Code32: return; // Change parsing mode; no-op here.
- case MCAF_Code64: return; // Change parsing mode; no-op here.
- case MCAF_SubsectionsViaSymbols:
- getWriter().setSubsectionsViaSymbols(true);
- return;
- }
+void MCMachOStreamer::emitSubsectionsViaSymbols() {
+ getWriter().setSubsectionsViaSymbols(true);
}
void MCMachOStreamer::emitLinkerOptions(ArrayRef<std::string> Options) {
diff --git a/llvm/lib/MC/MCNullStreamer.cpp b/llvm/lib/MC/MCNullStreamer.cpp
index e84830e..f76b2f7 100644
--- a/llvm/lib/MC/MCNullStreamer.cpp
+++ b/llvm/lib/MC/MCNullStreamer.cpp
@@ -38,6 +38,7 @@ namespace {
void emitCommonSymbol(MCSymbol *Symbol, uint64_t Size,
Align ByteAlignment) override {}
+ void emitSubsectionsViaSymbols() override {};
void beginCOFFSymbolDef(const MCSymbol *Symbol) override {}
void emitCOFFSymbolStorageClass(int StorageClass) override {}
void emitCOFFSymbolType(int Type) override {}
diff --git a/llvm/lib/MC/MCParser/DarwinAsmParser.cpp b/llvm/lib/MC/MCParser/DarwinAsmParser.cpp
index 5dc9cb6..de134e2 100644
--- a/llvm/lib/MC/MCParser/DarwinAsmParser.cpp
+++ b/llvm/lib/MC/MCParser/DarwinAsmParser.cpp
@@ -817,7 +817,7 @@ bool DarwinAsmParser::parseDirectiveSubsectionsViaSymbols(StringRef, SMLoc) {
Lex();
- getStreamer().emitAssemblerFlag(MCAF_SubsectionsViaSymbols);
+ getStreamer().emitSubsectionsViaSymbols();
return false;
}
diff --git a/llvm/lib/MC/MCStreamer.cpp b/llvm/lib/MC/MCStreamer.cpp
index a196842..618a35b 100644
--- a/llvm/lib/MC/MCStreamer.cpp
+++ b/llvm/lib/MC/MCStreamer.cpp
@@ -1245,7 +1245,10 @@ void MCStreamer::emitAbsoluteSymbolDiffAsULEB128(const MCSymbol *Hi,
emitULEB128Value(Diff);
}
-void MCStreamer::emitAssemblerFlag(MCAssemblerFlag Flag) {}
+void MCStreamer::emitSubsectionsViaSymbols() {
+ llvm_unreachable(
+ "emitSubsectionsViaSymbols only supported on Mach-O targets");
+}
void MCStreamer::emitSymbolDesc(MCSymbol *Symbol, unsigned DescValue) {}
void MCStreamer::beginCOFFSymbolDef(const MCSymbol *Symbol) {
llvm_unreachable("this directive only supported on COFF targets");
diff --git a/llvm/lib/MC/MCWasmStreamer.cpp b/llvm/lib/MC/MCWasmStreamer.cpp
index cddd250..9920ff9 100644
--- a/llvm/lib/MC/MCWasmStreamer.cpp
+++ b/llvm/lib/MC/MCWasmStreamer.cpp
@@ -59,14 +59,6 @@ void MCWasmStreamer::emitLabelAtPos(MCSymbol *S, SMLoc Loc, MCDataFragment &F,
Symbol->setTLS();
}
-void MCWasmStreamer::emitAssemblerFlag(MCAssemblerFlag Flag) {
- // Let the target do whatever target specific stuff it needs to do.
- getAssembler().getBackend().handleAssemblerFlag(Flag);
-
- // Do any generic stuff we need to do.
- llvm_unreachable("invalid assembler flag!");
-}
-
void MCWasmStreamer::changeSection(MCSection *Section, uint32_t Subsection) {
MCAssembler &Asm = getAssembler();
auto *SectionWasm = cast<MCSectionWasm>(Section);
diff --git a/llvm/lib/MC/MCWinCOFFStreamer.cpp b/llvm/lib/MC/MCWinCOFFStreamer.cpp
index e03f7b5..ee7a7c87 100644
--- a/llvm/lib/MC/MCWinCOFFStreamer.cpp
+++ b/llvm/lib/MC/MCWinCOFFStreamer.cpp
@@ -184,22 +184,6 @@ void MCWinCOFFStreamer::emitLabel(MCSymbol *S, SMLoc Loc) {
MCObjectStreamer::emitLabel(Symbol, Loc);
}
-void MCWinCOFFStreamer::emitAssemblerFlag(MCAssemblerFlag Flag) {
- // Let the target do whatever target specific stuff it needs to do.
- getAssembler().getBackend().handleAssemblerFlag(Flag);
-
- switch (Flag) {
- // None of these require COFF specific handling.
- case MCAF_SyntaxUnified:
- case MCAF_Code16:
- case MCAF_Code32:
- case MCAF_Code64:
- break;
- case MCAF_SubsectionsViaSymbols:
- llvm_unreachable("COFF doesn't support .subsections_via_symbols");
- }
-}
-
bool MCWinCOFFStreamer::emitSymbolAttribute(MCSymbol *S,
MCSymbolAttr Attribute) {
auto *Symbol = cast<MCSymbolCOFF>(S);