[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