summaryrefslogtreecommitdiff
path: root/lib/MC
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2009-08-30 06:17:16 +0000
committerDaniel Dunbar <daniel@zuster.org>2009-08-30 06:17:16 +0000
commit7092c7e1dcf9d05741b400dd54bbd7d3419773b2 (patch)
tree3fad2e13afa525093397708d07283d0378d4884e /lib/MC
parent7a1e924b9a7dde1bf936e38777e48b4dda7e8d1c (diff)
downloadllvm-7092c7e1dcf9d05741b400dd54bbd7d3419773b2.tar.gz
llvm-7092c7e1dcf9d05741b400dd54bbd7d3419773b2.tar.bz2
llvm-7092c7e1dcf9d05741b400dd54bbd7d3419773b2.tar.xz
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
Diffstat (limited to 'lib/MC')
-rw-r--r--lib/MC/MCAsmStreamer.cpp22
-rw-r--r--lib/MC/MCMachOStreamer.cpp20
-rw-r--r--lib/MC/MCNullStreamer.cpp6
3 files changed, 16 insertions, 32 deletions
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) {}