From 7092c7e1dcf9d05741b400dd54bbd7d3419773b2 Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Sun, 30 Aug 2009 06:17:16 +0000 Subject: llvm-mc: MCStreamer cleanups. - Remove EmitLocalSymbol, this is unsupported for now. - Switch Emit{CommonSymbol,Zerofill} to take alignment in bytes (for consistency). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80484 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/MC/MCAsmStreamer.cpp | 22 ++++++++-------------- lib/MC/MCMachOStreamer.cpp | 20 ++++++-------------- lib/MC/MCNullStreamer.cpp | 6 ++---- 3 files changed, 16 insertions(+), 32 deletions(-) (limited to 'lib/MC') diff --git a/lib/MC/MCAsmStreamer.cpp b/lib/MC/MCAsmStreamer.cpp index fa7c7cf09a..e5899fc899 100644 --- a/lib/MC/MCAsmStreamer.cpp +++ b/lib/MC/MCAsmStreamer.cpp @@ -53,13 +53,11 @@ public: virtual void EmitSymbolDesc(MCSymbol *Symbol, unsigned DescValue); - virtual void EmitLocalSymbol(MCSymbol *Symbol, const MCValue &Value); - virtual void EmitCommonSymbol(MCSymbol *Symbol, unsigned Size, - unsigned Pow2Alignment); + unsigned ByteAlignment); virtual void EmitZerofill(const MCSection *Section, MCSymbol *Symbol = 0, - unsigned Size = 0, unsigned Pow2Alignment = 0); + unsigned Size = 0, unsigned ByteAlignment = 0); virtual void EmitBytes(const StringRef &Data); @@ -173,21 +171,17 @@ void MCAsmStreamer::EmitSymbolDesc(MCSymbol *Symbol, unsigned DescValue) { OS << ".desc" << ' ' << Symbol << ',' << DescValue << '\n'; } -void MCAsmStreamer::EmitLocalSymbol(MCSymbol *Symbol, const MCValue &Value) { - OS << ".lsym" << ' ' << Symbol << ',' << Value << '\n'; -} - void MCAsmStreamer::EmitCommonSymbol(MCSymbol *Symbol, unsigned Size, - unsigned Pow2Alignment) { + unsigned ByteAlignment) { OS << ".comm"; OS << ' ' << Symbol << ',' << Size; - if (Pow2Alignment != 0) - OS << ',' << Pow2Alignment; + if (ByteAlignment != 0) + OS << ',' << Log2_32(ByteAlignment); OS << '\n'; } void MCAsmStreamer::EmitZerofill(const MCSection *Section, MCSymbol *Symbol, - unsigned Size, unsigned Pow2Alignment) { + unsigned Size, unsigned ByteAlignment) { // Note: a .zerofill directive does not switch sections. OS << ".zerofill "; @@ -197,8 +191,8 @@ void MCAsmStreamer::EmitZerofill(const MCSection *Section, MCSymbol *Symbol, if (Symbol != NULL) { OS << ',' << Symbol << ',' << Size; - if (Pow2Alignment != 0) - OS << ',' << Pow2Alignment; + if (ByteAlignment != 0) + OS << ',' << Log2_32(ByteAlignment); } OS << '\n'; } diff --git a/lib/MC/MCMachOStreamer.cpp b/lib/MC/MCMachOStreamer.cpp index 4ac0917bb0..41c82b3d42 100644 --- a/lib/MC/MCMachOStreamer.cpp +++ b/lib/MC/MCMachOStreamer.cpp @@ -111,13 +111,11 @@ public: virtual void EmitSymbolDesc(MCSymbol *Symbol, unsigned DescValue); - virtual void EmitLocalSymbol(MCSymbol *Symbol, const MCValue &Value); - virtual void EmitCommonSymbol(MCSymbol *Symbol, unsigned Size, - unsigned Pow2Alignment); + unsigned ByteAlignment); virtual void EmitZerofill(const MCSection *Section, MCSymbol *Symbol = 0, - unsigned Size = 0, unsigned Pow2Alignment = 0); + unsigned Size = 0, unsigned ByteAlignment = 0); virtual void EmitBytes(const StringRef &Data); @@ -266,24 +264,18 @@ void MCMachOStreamer::EmitSymbolDesc(MCSymbol *Symbol, unsigned DescValue) { getSymbolData(*Symbol).setFlags(DescValue & SF_DescFlagsMask); } -void MCMachOStreamer::EmitLocalSymbol(MCSymbol *Symbol, const MCValue &Value) { - // FIXME: Implement? - llvm_report_error("unsupported '.lsym' directive"); -} - void MCMachOStreamer::EmitCommonSymbol(MCSymbol *Symbol, unsigned Size, - unsigned Pow2Alignment) { + unsigned ByteAlignment) { // FIXME: Darwin 'as' does appear to allow redef of a .comm by itself. assert(Symbol->isUndefined() && "Cannot define a symbol twice!"); MCSymbolData &SD = getSymbolData(*Symbol); SD.setExternal(true); - SD.setCommon(Size, 1 << Pow2Alignment); + SD.setCommon(Size, ByteAlignment); } void MCMachOStreamer::EmitZerofill(const MCSection *Section, MCSymbol *Symbol, - unsigned Size, unsigned Pow2Alignment) { - unsigned ByteAlignment = 1 << Pow2Alignment; + unsigned Size, unsigned ByteAlignment) { MCSectionData &SectData = getSectionData(*Section); // The symbol may not be present, which only creates the section. @@ -296,7 +288,7 @@ void MCMachOStreamer::EmitZerofill(const MCSection *Section, MCSymbol *Symbol, MCSymbolData &SD = getSymbolData(*Symbol); - MCFragment *F = new MCZeroFillFragment(Size, 1 << Pow2Alignment, &SectData); + MCFragment *F = new MCZeroFillFragment(Size, ByteAlignment, &SectData); SD.setFragment(F); Symbol->setSection(*Section); diff --git a/lib/MC/MCNullStreamer.cpp b/lib/MC/MCNullStreamer.cpp index fa2aec392d..d4ca3d922b 100644 --- a/lib/MC/MCNullStreamer.cpp +++ b/lib/MC/MCNullStreamer.cpp @@ -41,13 +41,11 @@ namespace { virtual void EmitSymbolDesc(MCSymbol *Symbol, unsigned DescValue) {} - virtual void EmitLocalSymbol(MCSymbol *Symbol, const MCValue &Value) {} - virtual void EmitCommonSymbol(MCSymbol *Symbol, unsigned Size, - unsigned Pow2Alignment) {} + unsigned ByteAlignment) {} virtual void EmitZerofill(const MCSection *Section, MCSymbol *Symbol = 0, - unsigned Size = 0, unsigned Pow2Alignment = 0) {} + unsigned Size = 0, unsigned ByteAlignment = 0) {} virtual void EmitBytes(const StringRef &Data) {} -- cgit v1.2.3