summaryrefslogtreecommitdiffstats
path: root/llvm/lib/MC/MCAsmStreamer.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-01-23 07:47:02 +0000
committerChris Lattner <sabre@nondot.org>2010-01-23 07:47:02 +0000
commitb1301f7bceecfd74fd2d60f106288afc1e5c0f80 (patch)
tree2927d1c3c704c4b8c165483bec21a33e77ecb569 /llvm/lib/MC/MCAsmStreamer.cpp
parent76bdea32900ab533b0c059ec8b71fff59c919632 (diff)
downloadbcm5719-llvm-b1301f7bceecfd74fd2d60f106288afc1e5c0f80.tar.gz
bcm5719-llvm-b1301f7bceecfd74fd2d60f106288afc1e5c0f80.zip
mcize lcomm, simplify .comm, extend both to support 64-bit sizes.
llvm-svn: 94299
Diffstat (limited to 'llvm/lib/MC/MCAsmStreamer.cpp')
-rw-r--r--llvm/lib/MC/MCAsmStreamer.cpp22
1 files changed, 19 insertions, 3 deletions
diff --git a/llvm/lib/MC/MCAsmStreamer.cpp b/llvm/lib/MC/MCAsmStreamer.cpp
index ded2b42bd8c..bf39239e7a7 100644
--- a/llvm/lib/MC/MCAsmStreamer.cpp
+++ b/llvm/lib/MC/MCAsmStreamer.cpp
@@ -93,9 +93,15 @@ public:
virtual void EmitSymbolDesc(MCSymbol *Symbol, unsigned DescValue);
- virtual void EmitCommonSymbol(MCSymbol *Symbol, unsigned Size,
+ virtual void EmitCommonSymbol(MCSymbol *Symbol, uint64_t Size,
unsigned ByteAlignment);
+ /// EmitLocalCommonSymbol - Emit a local common (.lcomm) symbol.
+ ///
+ /// @param Symbol - The common symbol to emit.
+ /// @param Size - The size of the common symbol.
+ virtual void EmitLocalCommonSymbol(MCSymbol *Symbol, uint64_t Size);
+
virtual void EmitZerofill(const MCSection *Section, MCSymbol *Symbol = 0,
unsigned Size = 0, unsigned ByteAlignment = 0);
@@ -245,9 +251,9 @@ void MCAsmStreamer::EmitSymbolDesc(MCSymbol *Symbol, unsigned DescValue) {
EmitEOL();
}
-void MCAsmStreamer::EmitCommonSymbol(MCSymbol *Symbol, unsigned Size,
+void MCAsmStreamer::EmitCommonSymbol(MCSymbol *Symbol, uint64_t Size,
unsigned ByteAlignment) {
- OS << MAI.getCOMMDirective() << *Symbol << ',' << Size;
+ OS << "\t.comm\t" << *Symbol << ',' << Size;
if (ByteAlignment != 0 && MAI.getCOMMDirectiveTakesAlignment()) {
if (MAI.getAlignmentIsInBytes())
OS << ',' << ByteAlignment;
@@ -257,6 +263,16 @@ void MCAsmStreamer::EmitCommonSymbol(MCSymbol *Symbol, unsigned Size,
EmitEOL();
}
+/// EmitLocalCommonSymbol - Emit a local common (.lcomm) symbol.
+///
+/// @param Symbol - The common symbol to emit.
+/// @param Size - The size of the common symbol.
+void MCAsmStreamer::EmitLocalCommonSymbol(MCSymbol *Symbol, uint64_t Size) {
+ assert(MAI.hasLCOMMDirective() && "Doesn't have .lcomm, can't emit it!");
+ OS << "\t.lcomm\t" << *Symbol << ',' << Size;
+ EmitEOL();
+}
+
void MCAsmStreamer::EmitZerofill(const MCSection *Section, MCSymbol *Symbol,
unsigned Size, unsigned ByteAlignment) {
// Note: a .zerofill directive does not switch sections.
OpenPOWER on IntegriCloud