fix some more issues where we expected GetSection to do "get or create"
authorChris Lattner <sabre@nondot.org>
Fri, 31 Jul 2009 18:27:48 +0000 (18:27 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 31 Jul 2009 18:27:48 +0000 (18:27 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77700 91177308-0d34-0410-b5e6-96231b3b80d8

tools/llvm-mc/AsmParser.cpp

index 8348479240d803036d435dad721824e90b5dc28f..90a9a33593c814341f2221cdc7615e61b021dd79 100644 (file)
@@ -1052,8 +1052,13 @@ bool AsmParser::ParseDirectiveDarwinZerofill() {
   // If this is the end of the line all that was wanted was to create the
   // the section but with no symbol.
   if (Lexer.is(AsmToken::EndOfStatement)) {
+    // FIXME: Arch specific.
+    MCSection *S = Ctx.GetSection(Section);
+    if (S == 0)
+      S = MCSection::Create(Section, Ctx);
+    
     // Create the zerofill section but no symbol
-    Out.EmitZerofill(Ctx.GetSection(Section.c_str()));
+    Out.EmitZerofill(S);
     return false;
   }
 
@@ -1107,8 +1112,13 @@ bool AsmParser::ParseDirectiveDarwinZerofill() {
   if (Sym->getSection() || Ctx.GetSymbolValue(Sym))
     return Error(IDLoc, "invalid symbol redefinition");
 
+  // FIXME: Arch specific.
+  MCSection *S = Ctx.GetSection(Section);
+  if (S == 0)
+    S = MCSection::Create(Section, Ctx);
+  
   // Create the zerofill Symbol with Size and Pow2Alignment
-  Out.EmitZerofill(Ctx.GetSection(Section.c_str()), Sym, Size, Pow2Alignment);
+  Out.EmitZerofill(S, Sym, Size, Pow2Alignment);
 
   return false;
 }