[llvm-commits] [llvm] r108180 - in /llvm/trunk: include/llvm/MC/MCParser/AsmParser.h lib/MC/MCParser/AsmParser.cpp test/MC/AsmParser/directive_zerofill.s test/MC/AsmParser/exprs.s

Daniel Dunbar daniel at zuster.org
Mon Jul 12 12:37:35 PDT 2010


Author: ddunbar
Date: Mon Jul 12 14:37:35 2010
New Revision: 108180

URL: http://llvm.org/viewvc/llvm-project?rev=108180&view=rev
Log:
MC/AsmParser: Move .tbss and .zerofill parsing to Darwin specific parser.

Modified:
    llvm/trunk/include/llvm/MC/MCParser/AsmParser.h
    llvm/trunk/lib/MC/MCParser/AsmParser.cpp
    llvm/trunk/test/MC/AsmParser/directive_zerofill.s
    llvm/trunk/test/MC/AsmParser/exprs.s

Modified: llvm/trunk/include/llvm/MC/MCParser/AsmParser.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCParser/AsmParser.h?rev=108180&r1=108179&r2=108180&view=diff
==============================================================================
--- llvm/trunk/include/llvm/MC/MCParser/AsmParser.h (original)
+++ llvm/trunk/include/llvm/MC/MCParser/AsmParser.h Mon Jul 12 14:37:35 2010
@@ -139,8 +139,6 @@
   bool ParseDirectiveELFType(); // ELF specific ".type"
 
   bool ParseDirectiveComm(bool IsLocal); // ".comm" and ".lcomm"
-  bool ParseDirectiveDarwinZerofill(); // Darwin specific ".zerofill"
-  bool ParseDirectiveDarwinTBSS(); // Darwin specific ".tbss"
 
   bool ParseDirectiveAbort(); // ".abort"
   bool ParseDirectiveInclude(); // ".include"

Modified: llvm/trunk/lib/MC/MCParser/AsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCParser/AsmParser.cpp?rev=108180&r1=108179&r2=108180&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCParser/AsmParser.cpp (original)
+++ llvm/trunk/lib/MC/MCParser/AsmParser.cpp Mon Jul 12 14:37:35 2010
@@ -83,6 +83,12 @@
     Parser.AddDirectiveHandler(this, ".secure_log_reset",
                                MCAsmParser::DirectiveHandler(
                              &DarwinAsmParser::ParseDirectiveSecureLogReset));
+    Parser.AddDirectiveHandler(this, ".tbss",
+                               MCAsmParser::DirectiveHandler(
+                                 &DarwinAsmParser::ParseDirectiveTBSS));
+    Parser.AddDirectiveHandler(this, ".zerofill",
+                               MCAsmParser::DirectiveHandler(
+                                 &DarwinAsmParser::ParseDirectiveZerofill));
   }
 
   bool ParseDirectiveDesc(StringRef, SMLoc);
@@ -91,6 +97,8 @@
   bool ParseDirectiveSecureLogReset(StringRef, SMLoc);
   bool ParseDirectiveSecureLogUnique(StringRef, SMLoc);
   bool ParseDirectiveSubsectionsViaSymbols(StringRef, SMLoc);
+  bool ParseDirectiveTBSS(StringRef, SMLoc);
+  bool ParseDirectiveZerofill(StringRef, SMLoc);
 };
 
 }
@@ -838,10 +846,6 @@
       return ParseDirectiveComm(/*IsLocal=*/false);
     if (IDVal == ".lcomm")
       return ParseDirectiveComm(/*IsLocal=*/true);
-    if (IDVal == ".zerofill")
-      return ParseDirectiveDarwinZerofill();
-    if (IDVal == ".tbss")
-      return ParseDirectiveDarwinTBSS();
 
     if (IDVal == ".abort")
       return ParseDirectiveAbort();
@@ -1532,12 +1536,12 @@
   return false;
 }
 
-/// ParseDirectiveDarwinZerofill
+/// ParseDirectiveZerofill
 ///  ::= .zerofill segname , sectname [, identifier , size_expression [
 ///      , align_expression ]]
-bool AsmParser::ParseDirectiveDarwinZerofill() {
+bool DarwinAsmParser::ParseDirectiveZerofill(StringRef, SMLoc) {
   StringRef Segment;
-  if (ParseIdentifier(Segment))
+  if (getParser().ParseIdentifier(Segment))
     return TokError("expected segment name after '.zerofill' directive");
 
   if (getLexer().isNot(AsmToken::Comma))
@@ -1545,7 +1549,7 @@
   Lex();
 
   StringRef Section;
-  if (ParseIdentifier(Section))
+  if (getParser().ParseIdentifier(Section))
     return TokError("expected section name after comma in '.zerofill' "
                     "directive");
 
@@ -1553,9 +1557,9 @@
   // the section but with no symbol.
   if (getLexer().is(AsmToken::EndOfStatement)) {
     // Create the zerofill section but no symbol
-    getStreamer().EmitZerofill(Ctx.getMachOSection(Segment, Section,
-                                         MCSectionMachO::S_ZEROFILL, 0,
-                                         SectionKind::getBSS()));
+    getStreamer().EmitZerofill(getContext().getMachOSection(
+                                 Segment, Section, MCSectionMachO::S_ZEROFILL,
+                                 0, SectionKind::getBSS()));
     return false;
   }
 
@@ -1565,11 +1569,11 @@
 
   SMLoc IDLoc = getLexer().getLoc();
   StringRef IDStr;
-  if (ParseIdentifier(IDStr))
+  if (getParser().ParseIdentifier(IDStr))
     return TokError("expected identifier in directive");
   
   // handle the identifier as the key symbol.
-  MCSymbol *Sym = CreateSymbol(IDStr);
+  MCSymbol *Sym = getContext().GetOrCreateSymbol(IDStr);
 
   if (getLexer().isNot(AsmToken::Comma))
     return TokError("unexpected token in directive");
@@ -1577,7 +1581,7 @@
 
   int64_t Size;
   SMLoc SizeLoc = getLexer().getLoc();
-  if (ParseAbsoluteExpression(Size))
+  if (getParser().ParseAbsoluteExpression(Size))
     return true;
 
   int64_t Pow2Alignment = 0;
@@ -1585,7 +1589,7 @@
   if (getLexer().is(AsmToken::Comma)) {
     Lex();
     Pow2AlignmentLoc = getLexer().getLoc();
-    if (ParseAbsoluteExpression(Pow2Alignment))
+    if (getParser().ParseAbsoluteExpression(Pow2Alignment))
       return true;
   }
   
@@ -1611,24 +1615,24 @@
   // Create the zerofill Symbol with Size and Pow2Alignment
   //
   // FIXME: Arch specific.
-  getStreamer().EmitZerofill(Ctx.getMachOSection(Segment, Section,
-                                       MCSectionMachO::S_ZEROFILL, 0,
-                                       SectionKind::getBSS()),
-                   Sym, Size, 1 << Pow2Alignment);
+  getStreamer().EmitZerofill(getContext().getMachOSection(
+                               Segment, Section, MCSectionMachO::S_ZEROFILL,
+                               0, SectionKind::getBSS()),
+                             Sym, Size, 1 << Pow2Alignment);
 
   return false;
 }
 
-/// ParseDirectiveDarwinTBSS
+/// ParseDirectiveTBSS
 ///  ::= .tbss identifier, size, align
-bool AsmParser::ParseDirectiveDarwinTBSS() {
+bool DarwinAsmParser::ParseDirectiveTBSS(StringRef, SMLoc) {
   SMLoc IDLoc = getLexer().getLoc();
   StringRef Name;
-  if (ParseIdentifier(Name))
+  if (getParser().ParseIdentifier(Name))
     return TokError("expected identifier in directive");
     
   // Handle the identifier as the key symbol.
-  MCSymbol *Sym = CreateSymbol(Name);
+  MCSymbol *Sym = getContext().GetOrCreateSymbol(Name);
 
   if (getLexer().isNot(AsmToken::Comma))
     return TokError("unexpected token in directive");
@@ -1636,7 +1640,7 @@
 
   int64_t Size;
   SMLoc SizeLoc = getLexer().getLoc();
-  if (ParseAbsoluteExpression(Size))
+  if (getParser().ParseAbsoluteExpression(Size))
     return true;
 
   int64_t Pow2Alignment = 0;
@@ -1644,7 +1648,7 @@
   if (getLexer().is(AsmToken::Comma)) {
     Lex();
     Pow2AlignmentLoc = getLexer().getLoc();
-    if (ParseAbsoluteExpression(Pow2Alignment))
+    if (getParser().ParseAbsoluteExpression(Pow2Alignment))
       return true;
   }
   
@@ -1665,7 +1669,7 @@
   if (!Sym->isUndefined())
     return Error(IDLoc, "invalid symbol redefinition");
   
-  getStreamer().EmitTBSSSymbol(Ctx.getMachOSection(
+  getStreamer().EmitTBSSSymbol(getContext().getMachOSection(
                                  "__DATA", "__thread_bss",
                                  MCSectionMachO::S_THREAD_LOCAL_ZEROFILL,
                                  0, SectionKind::getThreadBSS()),

Modified: llvm/trunk/test/MC/AsmParser/directive_zerofill.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AsmParser/directive_zerofill.s?rev=108180&r1=108179&r2=108180&view=diff
==============================================================================
--- llvm/trunk/test/MC/AsmParser/directive_zerofill.s (original)
+++ llvm/trunk/test/MC/AsmParser/directive_zerofill.s Mon Jul 12 14:37:35 2010
@@ -1,4 +1,4 @@
-# RUN: llvm-mc -triple i386-unknown-unknown %s | FileCheck %s
+# RUN: llvm-mc -triple i386-apple-darwin9 %s | FileCheck %s
 
 # CHECK: TEST0:
 # CHECK: .zerofill __FOO,__bar,x,1

Modified: llvm/trunk/test/MC/AsmParser/exprs.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/AsmParser/exprs.s?rev=108180&r1=108179&r2=108180&view=diff
==============================================================================
--- llvm/trunk/test/MC/AsmParser/exprs.s (original)
+++ llvm/trunk/test/MC/AsmParser/exprs.s Mon Jul 12 14:37:35 2010
@@ -70,5 +70,3 @@
 L1:
         jmp A
         .long . - L1
-
-        .zerofill __DATA,_bss,A,0





More information about the llvm-commits mailing list