[llvm-commits] [llvm] r80343 - in /llvm/trunk: include/llvm/MC/MCStreamer.h lib/MC/MCAsmStreamer.cpp lib/MC/MCMachOStreamer.cpp lib/MC/MCNullStreamer.cpp test/MC/AsmParser/directive_lcomm.s test/MC/AsmParser/labels.s tools/llvm-mc/AsmParser.cpp
Daniel Dunbar
daniel at zuster.org
Thu Aug 27 22:48:47 PDT 2009
Author: ddunbar
Date: Fri Aug 28 00:48:46 2009
New Revision: 80343
URL: http://llvm.org/viewvc/llvm-project?rev=80343&view=rev
Log:
llvm-mc: Emit .lcomm as .zerofill.
Modified:
llvm/trunk/include/llvm/MC/MCStreamer.h
llvm/trunk/lib/MC/MCAsmStreamer.cpp
llvm/trunk/lib/MC/MCMachOStreamer.cpp
llvm/trunk/lib/MC/MCNullStreamer.cpp
llvm/trunk/test/MC/AsmParser/directive_lcomm.s
llvm/trunk/test/MC/AsmParser/labels.s
llvm/trunk/tools/llvm-mc/AsmParser.cpp
Modified: llvm/trunk/include/llvm/MC/MCStreamer.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCStreamer.h?rev=80343&r1=80342&r2=80343&view=diff
==============================================================================
--- llvm/trunk/include/llvm/MC/MCStreamer.h (original)
+++ llvm/trunk/include/llvm/MC/MCStreamer.h Fri Aug 28 00:48:46 2009
@@ -152,9 +152,8 @@
/// @param Symbol - The common symbol to emit.
/// @param Size - The size of the common symbol.
/// @param Pow2Alignment - The alignment of the common symbol if non-zero.
- /// @param IsLocal - If true, then the symbol is to be a local common
virtual void EmitCommonSymbol(MCSymbol *Symbol, unsigned Size,
- unsigned Pow2Alignment, bool IsLocal) = 0;
+ unsigned Pow2Alignment) = 0;
/// EmitZerofill - Emit a the zerofill section and possiblity a symbol, if
/// @param Symbol is non-NULL, for @param Size and with the @param
Modified: llvm/trunk/lib/MC/MCAsmStreamer.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCAsmStreamer.cpp?rev=80343&r1=80342&r2=80343&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCAsmStreamer.cpp (original)
+++ llvm/trunk/lib/MC/MCAsmStreamer.cpp Fri Aug 28 00:48:46 2009
@@ -56,7 +56,7 @@
virtual void EmitLocalSymbol(MCSymbol *Symbol, const MCValue &Value);
virtual void EmitCommonSymbol(MCSymbol *Symbol, unsigned Size,
- unsigned Pow2Alignment, bool IsLocal);
+ unsigned Pow2Alignment);
virtual void EmitZerofill(const MCSection *Section, MCSymbol *Symbol = 0,
unsigned Size = 0, unsigned Pow2Alignment = 0);
@@ -178,11 +178,8 @@
}
void MCAsmStreamer::EmitCommonSymbol(MCSymbol *Symbol, unsigned Size,
- unsigned Pow2Alignment, bool IsLocal) {
- if (IsLocal)
- OS << ".lcomm";
- else
- OS << ".comm";
+ unsigned Pow2Alignment) {
+ OS << ".comm";
OS << ' ' << Symbol << ',' << Size;
if (Pow2Alignment != 0)
OS << ',' << Pow2Alignment;
Modified: llvm/trunk/lib/MC/MCMachOStreamer.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCMachOStreamer.cpp?rev=80343&r1=80342&r2=80343&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCMachOStreamer.cpp (original)
+++ llvm/trunk/lib/MC/MCMachOStreamer.cpp Fri Aug 28 00:48:46 2009
@@ -105,7 +105,7 @@
virtual void EmitLocalSymbol(MCSymbol *Symbol, const MCValue &Value);
virtual void EmitCommonSymbol(MCSymbol *Symbol, unsigned Size,
- unsigned Pow2Alignment, bool IsLocal);
+ unsigned Pow2Alignment);
virtual void EmitZerofill(const MCSection *Section, MCSymbol *Symbol = 0,
unsigned Size = 0, unsigned Pow2Alignment = 0);
@@ -268,8 +268,7 @@
}
void MCMachOStreamer::EmitCommonSymbol(MCSymbol *Symbol, unsigned Size,
- unsigned Pow2Alignment,
- bool IsLocal) {
+ unsigned Pow2Alignment) {
llvm_unreachable("FIXME: Not yet implemented!");
}
Modified: llvm/trunk/lib/MC/MCNullStreamer.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCNullStreamer.cpp?rev=80343&r1=80342&r2=80343&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCNullStreamer.cpp (original)
+++ llvm/trunk/lib/MC/MCNullStreamer.cpp Fri Aug 28 00:48:46 2009
@@ -44,7 +44,7 @@
virtual void EmitLocalSymbol(MCSymbol *Symbol, const MCValue &Value) {}
virtual void EmitCommonSymbol(MCSymbol *Symbol, unsigned Size,
- unsigned Pow2Alignment, bool IsLocal) {}
+ unsigned Pow2Alignment) {}
virtual void EmitZerofill(const MCSection *Section, MCSymbol *Symbol = 0,
unsigned Size = 0, unsigned Pow2Alignment = 0) {}
Modified: llvm/trunk/test/MC/AsmParser/directive_lcomm.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AsmParser/directive_lcomm.s?rev=80343&r1=80342&r2=80343&view=diff
==============================================================================
--- llvm/trunk/test/MC/AsmParser/directive_lcomm.s (original)
+++ llvm/trunk/test/MC/AsmParser/directive_lcomm.s Fri Aug 28 00:48:46 2009
@@ -1,9 +1,9 @@
# RUN: llvm-mc -triple i386-unknown-unknown %s | FileCheck %s
# CHECK: TEST0:
-# CHECK: .lcomm a,7,4
-# CHECK: .lcomm b,8
-# CHECK: .lcomm c,0
+# CHECK: .zerofill __DATA,__bss,a,7,4
+# CHECK: .zerofill __DATA,__bss,b,8
+# CHECK: .zerofill __DATA,__bss,c,0
TEST0:
.lcomm a, 8-1, 4
.lcomm b,8
Modified: llvm/trunk/test/MC/AsmParser/labels.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AsmParser/labels.s?rev=80343&r1=80342&r2=80343&view=diff
==============================================================================
--- llvm/trunk/test/MC/AsmParser/labels.s (original)
+++ llvm/trunk/test/MC/AsmParser/labels.s Fri Aug 28 00:48:46 2009
@@ -44,7 +44,7 @@
// CHECK: .comm "a 6",1
.comm "a 6", 1
-// CHECK: .lcomm "a 7",1
+// CHECK: .zerofill __DATA,__bss,"a 7",1
.lcomm "a 7", 1
// CHECK: .lsym "a 8",1
Modified: llvm/trunk/tools/llvm-mc/AsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-mc/AsmParser.cpp?rev=80343&r1=80342&r2=80343&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-mc/AsmParser.cpp (original)
+++ llvm/trunk/tools/llvm-mc/AsmParser.cpp Fri Aug 28 00:48:46 2009
@@ -1258,7 +1258,13 @@
return Error(IDLoc, "invalid symbol redefinition");
// Create the Symbol as a common or local common with Size and Pow2Alignment
- Out.EmitCommonSymbol(Sym, Size, Pow2Alignment, IsLocal);
+ if (IsLocal)
+ Out.EmitZerofill(getMachOSection("__DATA", "__bss",
+ MCSectionMachO::S_ZEROFILL, 0,
+ SectionKind()),
+ Sym, Size, Pow2Alignment);
+ else
+ Out.EmitCommonSymbol(Sym, Size, Pow2Alignment);
return false;
}
More information about the llvm-commits
mailing list